Excel не закрывается после развертывания моего веб-сайта в IIS

Я использую взаимодействие Excel на С# в своем проекте веб-сайта для анализа файла Excel и преобразования его в текстовый файл. Пример кода выглядит следующим образом. Он работал хорошо в режиме отладки. Но в диспетчере задач я часто вижу два запущенных Excel, почему? Кроме того, после развертывания веб-сайта в IIS файл excel.exe не закрывается. Мой проект - это проект веб-сайта в VS 2010 (Ultimate). Моя машина — Windows Server 2008, что означает, что у меня должен быть IIS 7. Но когда я запускаю inetmgr, он показывает IIS версии 6 (после поиска в Google я подтвердил, что мой IIS должен быть все еще 7, инструмент управления — 6).

Итак, мой вопрос: почему Excel не закрывается после развертывания в IIS?

Excel.Application excel=new Excel.Application();
Excel.Workbooks wbs=excel.Workbooks;
Excel.Workbook wb=wbs.Open(…);

Try 
{
   …
   Foreach(Excel.Worksheet sheet in wb.Sheets)
   {
      …
      Marshal.RealseComObject(sheet);
   }
   …
}

Catch()
{
}

Finally
{
   wb.Close(false, missing, missing);
   while (Marshal.ReleaseComObject(wb)!=0)
   {
   }
   wb=null;
   while (Marshal.ReleaseComObject(wbs)!=0)
   {
   }
   wbs=null;

   excel.Quit();
   while (Marshal.ReleaseComObject(excel)!=0)
   {
   }
   excel=null;
   GC.Collect();
   GC.WaitForPendingFinalizers();
}

Обновлено: оказалось, что это произошло из-за того, что wbs.Open(…) выдало исключение.

Я нашел решение по следующей ссылке, и это решило мою проблему. Не удается открыть файл Excel в C#


person GLP    schedule 04.11.2013    source источник
comment
Попробуйте сделать экземпляры Excel видимыми, чтобы вы могли проверить их состояние. Более того, если вы не используете расширенные функции, вам следует использовать другую библиотеку для чтения ваших файлов Excel: EPPlus — хороший выбор. Если у вас есть проблемы с производительностью, вы можете вернуться к NPOI.   -  person Pragmateek    schedule 06.11.2013
comment
Возможно, вы могли бы превратить обновление в ответ. Самостоятельно отвечать можно (источник).   -  person Andre Silva    schedule 04.12.2014
comment
Вы абсолютно не должны использовать Excel Interop в своем веб-приложении. Microsoft предупреждает об опасностях. Мало того, что это ненадежно, так еще и неудобно работать с кодом. Любая из популярных библиотек, таких как EPPlus или NPOI Open Office XML SDK, должна соответствовать вашим потребностям.   -  person mason    schedule 04.12.2014