C# 如何在IIS上处置Excel COM对象
我在IIS上有一个ASP.NET应用程序。在此应用程序中,我使用Excel COM对象:C# 如何在IIS上处置Excel COM对象,c#,asp.net,iis,comobject,C#,Asp.net,Iis,Comobject,我在IIS上有一个ASP.NET应用程序。在此应用程序中,我使用Excel COM对象: using Excel = Microsoft.Office.Interop.Excel; 我使用以下对象: public Excel.Application ExlApp; // public Excel.Workbook ExlWb; // public Excel.Worksheet ExlWs; 然后像这样摧毁他们:
using Excel = Microsoft.Office.Interop.Excel;
我使用以下对象:
public Excel.Application ExlApp;
//
public Excel.Workbook ExlWb;
//
public Excel.Worksheet ExlWs;
然后像这样摧毁他们:
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.ReleaseComObject(ExlWs);
ExlWb.Close(Type.Missing, Type.Missing, Type.Missing);
Marshal.ReleaseComObject(ExlWb);
ExlApp.Quit();
Marshal.ReleaseComObject(ExlApp);
因此,它在VisualStudio2008上正常工作。
但是当我仅在IIS上启动此应用程序时,无法销毁Excel进程!
救命啊 我过去也遇到过调用.Quit()后excel进程仍然存在的问题。我侵入的解决方案是找到正在运行的进程并杀死它。这可能不是最优的,但我想我会分享我的经验。我同意这并不理想,可能不是最终的答案,但我永远无法让interop excel关闭正常运行。当时我也在使用Office 2003,从那以后,这些工具取得了长足的进步。“MS不支持从Windows服务(例如IIS和ASP.NET)使用自动化”,因此…似乎杀掉proceseas是停止EXCEL的一种方法。