2011-09-23 65 views
2

我有一個簡單的Web應用程序,它使用Excel Interop庫來讀取並插入Excel電子表格。我正在進行盡職調查,以確保我don't use two dots並確保使用Marshal.ReleaseComObject()GC.Collect()來釋放所有COM對象引用,但仍在我的服務器上運行EXCEL.EXE進程。Excel互操作庫與ASP.NET不兼容?

我創建了一個Windows窗體應用程序,它使用與我的ASP.NET應用程序中相同的對象釋放過程,並且它成功結束了該過程。使用Interop庫與ASP.NET有什麼關係?

編輯:作爲在黑暗中拍攝,可能需要在服務器上以特定方式設置權限?我在我的web.config文件中使用<identity impersonate="true"/>,並且是服務器上的本地管理員。

回答

4

我不確定這是否正是答案,但我已經與ASP.NET和Excel Interop一起工作了很多,並且可以爲您提供一些我的觀察結果/指針。

如果您使用任務管理器,您可以看到哪個用戶仍在運行EXCEL.EXE進程 - 這很可能是AppPool身份。

從應用程序池回收的經驗來看,這將關閉Excel。

此外,您可能會注意到,如果您再次運行腳本,第二個Excel將打開並關閉!

供參考,這是我的關閉Excel代碼:

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