2012-02-03 7 views
0

У меня есть приложение ASP.NET для IIS. В этом приложении я использую Excel COM объект:Как я могу удалить объект Excel COM в IIS

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

Таким образом, он работает нормально на Visual Studio 2008 НО! Когда я запускаю это приложение только в IIS, процесс Excel не может быть уничтожен! ПОМОЩЬ!

ответ

1

У меня были проблемы в прошлом, когда процессы excel торчали вокруг после вызова .Quit(). Решение, в которое я взломал свой путь, - это поиск текущего процесса и его убийство. Это может быть не оптимальным, но я бы поделился своим опытом.

+1

очень плохое решение ( – Oleg

+0

Я согласен, что это не идеальный вариант, и, вероятно, это не окончательный ответ, но я никогда не смог бы заставить interop excel shutdown правильно вести себя. В то время я также использовал Office 2003, а инструменты проделали длинный путь с тех пор. – eppdog

+1

«Использование автоматизации из Windows Service (например, IIS и ASP.NET) НЕ поддерживается MS», поэтому ... кажется, что убийство proceseas - единственный способ остановить EXCEL. – Oleg