Может ли приложение IIS повторно использовать собственный пул приложений?

У меня есть приложение IIS с долгоживущим синглтоном. В редких случаях этот синглтон зависает при попытке получить ресурс. Известно, что перезапуск пула приложений приведет к тому, что ресурс снова станет доступным. Предполагая, что это редкое событие может быть перехвачено самим приложением с помощью StopWatch или аналогичного, может ли обработчик событий в самом приложении повторно использовать пул приложений? Это серьезный поступок, но он лучше, чем позволять ему зависать до следующего запланированного перезапуска IIS. Причина зависания связана с этим ресурсом и его взаимодействием с IIS, и у меня нет средств исправить это. Обратите внимание, что вызов для получения ресурса является синхронным. Если да, просьба предоставить информацию о том, как это сделать.

Ответ на комментарии. Что касается перезапуска домена приложения и повторного использования пула приложений, мои наблюдения таковы: перезапуск домена приложения - одна из причин зависания. ресурс - это неуправляемая родная dll, которая загружается не моим собственным кодом. Возможно, я найду API для выгрузки и загрузки неуправляемой неуправляемой dll. Но пока я вручную, а не программно, перезапускаю пул приложений для восстановления операций.

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


person subsci    schedule 26.08.2015    source источник
comment
Вы уже исключили утилизацию домена приложения?   -  person AnotherDeveloper    schedule 26.08.2015
comment
возможный дубликат перезапуска (повторного использования) пула приложений   -  person Cory Charlton    schedule 26.08.2015
comment
@CoryCharlton Да, это может быть дубликат, но я думаю, что этот может быть другим, пожалуйста, дайте мне знать, потому что он спрашивает о том, что приложение перерабатывает свой родительский пул, а не третья сторона. Пожалуйста, помогите мне понять. Должен ли я просто попытаться перезапустить мое приложение из пула приложений и посмотреть, как это работает?   -  person subsci    schedule 26.08.2015
comment
@subsci Да, я бы попытался реализовать код, показанный в этом примере, для перезапуска пула приложений. Тем не менее, поскольку @Jason упомянул, что переработка домена приложения, вероятно, проще и может соответствовать вашим потребностям. Также из связанного возможного дубликата: HttpRuntime.UnloadAppDomain();   -  person Cory Charlton    schedule 26.08.2015