Excel应用程序在内存中不断增长

时间:2012-02-06 17:37:10

标签: c# asp.net excel iis office-automation

我在IIS上有一个ASP.net应用程序。 在这个应用程序中,我创建了一个Excel应用程序:

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);

问题:在工作期间,EXCEL进程在内存中成长,如何正确关闭工作簿?

1 个答案:

答案 0 :(得分:5)

也许你应该考虑用OpenXML处理替换Excel自动化。自动化Office应用程序服务器端是不受支持的方案:

http://support.microsoft.com/kb/257757

“Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会展示在此环境中运行Office时出现不稳定的行为和/或死锁。“