Excel совместимые библиотеки несовместимы с ASP.NET? - PullRequest
2 голосов
/ 23 сентября 2011

У меня есть простое веб-приложение, которое использует библиотеки Excel Interop для чтения и вставки в электронную таблицу Excel.Я проявляю должную осмотрительность, чтобы гарантировать, что я не использую две точки , и чтобы все ссылки на COM-объекты освобождались с использованием Marshal.ReleaseComObject() и GC.Collect(), но при этом все еще существует EXCEL.Процесс EXE выполняется на моем сервере.

Я создал приложение Windows Forms, которое использует тот же процесс освобождения объектов, что и в моем приложении ASP.NET, и оно успешно завершает процесс.Есть ли что-то связанное с использованием библиотек Interop с ASP.NET, которые я пропустил?

РЕДАКТИРОВАТЬ: Как выстрел в темноте, возможно, необходимо настроить разрешения на сервере определенным образом?Я использую <identity impersonate="true"/> в своем файле web.config и являюсь локальным администратором на сервере.

1 Ответ

4 голосов
/ 23 сентября 2011

Я не уверен, что это именно тот ответ, но я много работал с ASP.NET и Excel Interop и могу предложить вам некоторые из моих наблюдений / указателей.

Если вы используете диспетчер задач, вы можетепосмотрите, какой пользователь все еще запускает процесс EXCEL.EXE - скорее всего, это удостоверение AppPool.

Из опыта, когда пул приложений перезагружается, это закроет Excel.

Также вы можете заметить, что если вы запуститеваш скрипт снова второй Excel открывается и закрывается!

Для справки, вот мой код Закрыть Excel:

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