Когда Application_End не вызывается в asp.net WebService
Я знаю, что в следующих случаях будет вызываться Apllication_end:
- отредактируйте файл конфигурации для приложения, которое работает.
- изменить DLL в каталоге bin.
- остановить (или перезапустить) IIS.
- Переработка процессов включена либо в пулах приложений IIS6, либо с использованием рабочего процесса aspnet.
но мой вопрос: в каких случаях он не будет вызван?
Я знаю, что он не будет вызван, если вы вручную завершите процесс w3wp или если сервер будет жестоко выключен.
Есть ли другие сценарии?
Спасибо!
2 ответа
Кажется, что жестокое закрытие может быть вызвано OutOfMemoryException, который вызвал сбой в создании AppDomain, которые необходимы для выполнения запросов. В этом случае Application_end не будет вызываться.
Тип события: ошибка
Источник события: ASP.NET 2.0.50727.0
Категория события: нет
Код события: 1334
Дата: 22.04.2012
Время: 11:23:13
Пользователь: N/A
Компьютер: CCBSHAIS02
Описание:
Не удалось инициализировать домен приложения:/LM/W3SVC/1/Root/AgentWSИсключение: System.SystemException
Сообщение: не удалось создать домен приложения.
StackTrace: в System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(строковый appId, IApplicationHost appHost, hostingingEnvironmentParameters hostingParameters) в System.Web.Hosting.ApplicationManager.
InnerException: System.OutOfMemoryException
Сообщение: было сгенерировано исключение типа System.OutOfMemoryException.
StackTrace: в System.AppDomain.nCreateDomain(String friendlyName, настройка AppDomainSetup, Evidence предоставил SecurityInfo, Evidence creatorsSecurityInfo, IntPtr parentSecurityDescriptor) в System.AppDomain.CreateDomain(строковый friendlyName, папка для Windows. (String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)
для дальнейшего чтения по IIS и доменам приложений посмотрите на: http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx
Ответ на ваш вопрос в основном уже в вашем вопросе. Application_End вызывается каждый раз, когда процесс, на котором размещается ваш веб-сервис, корректно завершается.
Единственный раз, когда это произойдет:
- действие заставило IIS перезапустить процесс службы (изменение файла вызовет это)
- служба IIS закрыта
- процесс переработки.
Если процесс внезапно завершается (т. Е. Убивает процесс w3wp), у него не будет возможности запустить.