Excel互操作库与ASP.NET不兼容?

时间:2011-09-23 15:52:23

标签: asp.net memory-leaks com-interop

我有一个简单的Web应用程序,它使用Excel Interop库来读取和插入Excel电子表格。我正在尽职尽责地确保don't use two dots并确保使用Marshal.ReleaseComObject()GC.Collect()释放所有COM对象引用,但仍有一个EXCEL.EXE进程在运行在我的服务器上。

我创建了一个Windows窗体应用程序,它使用与我的ASP.NET应用程序相同的对象释放过程,并且它成功结束了该过程。使用我忽略的Interop库与ASP.NET有什么关系吗?

编辑:在黑暗中拍摄,可能需要在服务器上以特定方式设置权限?我在我的web.config文件中使用<identity impersonate="true"/>,并且是服务器上的本地管理员。

1 个答案:

答案 0 :(得分:4)

我不确定这是一个答案,但我在ASP.NET和Excel Interop上做了很多工作,可以为您提供一些观察/指示。

如果您使用任务管理器,您可以看到哪个用户仍在运行EXCEL.EXE进程 - 它很可能是AppPool标识。

根据应用程序池回收的经验,这将关闭Excel。

另外,您可能会注意到,如果再次运行脚本,则会打开第二个Excel并关闭!

供参考,这是我的关闭Excel代码:

xl.Quit();
Marshal.ReleaseComObject(xl);
xl = null;
GC.Collect();