ABCpdfCE7.dll заблокирован IIS

У меня есть веб-сайт в ASP.Net, который создает PDF-файлы с помощью стороннего приложения под названием ABCPdf. ABCPdf состоит из двух dll: ABCpdf.dll и ABCpdfCE7.dll. ABCpdf.dll - это .NET-оболочка для неуправляемого файла ABCpdfCE7.dll.

Как только создается pdf. ABCpdfCE7.dll заблокирован IIS (т.е. не может его переименовать или удалить), если я не перезапускаю пул приложений или не перезапускаю IIS. Это вызывает проблему при обновлении моего веб-сайта, потому что мы не можем перезаписать ABCpdfCE7.dll.

Есть ли способ освободить ресурс, который блокирует ABCpdfCE7.dll в .Net? Перезапуск IIS или перезапуск пула приложений при каждом обновлении не является решением, потому что на нем работает несколько веб-сайтов.

Я каждый раз удаляю объект из библиотеки PDF

Using theDoc As New Doc

    // Generate the pdf

    theDoc.Clear()
End Using

person Alexandre Pepin    schedule 22.03.2011    source источник
comment
Можете ли вы разместить свой код там, где вы используете библиотеку PDF?   -  person Michael Haren    schedule 22.03.2011
comment
В любом случае используйте отдельный AppPool для каждого сайта - это лишь одна из множества возможных проблем, с которыми вы столкнетесь в долгосрочной перспективе.   -  person Grant Thomas    schedule 22.03.2011
comment
@Мистер. Разочарование Проверю это решение, спасибо   -  person Alexandre Pepin    schedule 22.03.2011
comment
Не беспокойтесь, надеюсь, все будет хорошо. :)   -  person Grant Thomas    schedule 22.03.2011


Ответы (1)


Как часто изменяется ABCpdfCE7.dll? Думаю, не так уж и часто, так почему вы подталкиваете его с каждым обновлением, просто оставьте это в стороне.

Плюс еще пара наблюдений:

Повторное использование пула приложений сохраняет сеансы, поэтому оно не должно оказывать никакого влияния на ваших пользователей, кроме производительности, если вы кэшируете много дорогостоящих ресурсов, и кто-то получит задержку первого обращения.

ABCPdf, в зависимости от того, как вы его используете, порождает экземпляр Internet Explorer для преобразования HTML в PDF. Вы можете проверить диспетчер задач, чтобы узнать, работает ли IE в фоновом режиме, и если да, то его устранение может решить ваши проблемы, хотя я не знаю, как вы могли бы избежать возможного убийства чьей-либо работы с PDF.

person Josh Pearce    schedule 22.03.2011
comment
Да, не проталкивать dll было решением. Я искал что-то еще на случай, если мы забудем его запустить, когда будем обновлять ABCpdf. Кроме того, повторное включение пула приложений не сохраняет сеансы на другом веб-сайте, которые работают в том же пуле приложений. - person Alexandre Pepin; 22.03.2011
comment
@Alexandre: Повторюсь: дайте сайтам их собственные AppPool, точка. - person Grant Thomas; 22.03.2011
comment
@Мистер. Разочарование: использование дополнительных пулов приложений не может занять намного больше памяти? - person Josh Pearce; 22.03.2011
comment
В тот момент, когда вы разделяете память и рабочие процессы - AppPool может иметь фиксированный объем памяти, что в данном случае еще хуже. Приложение будет использовать необходимую ему память, скомпрометированную доступной памятью, что в любом случае может привести к автоматическому перезапуску пула приложений. Память здесь меньше всего вас беспокоит. - person Grant Thomas; 22.03.2011