Исключительная ситуация в Application_Start - как мне отменить запуск приложения? - PullRequest
2 голосов
/ 14 июля 2010

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

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

Мы используем ASP.NET 3.5, WebForms и MVC.

Ответы [ 2 ]

3 голосов
/ 14 июля 2010

AppDomain.Unload предлагает то, что вы ищете, но я бы не рекомендовал это.

Есть много уловов; Разрушение домена приложения программным способом не обходится без его собственного набора проблем (то есть, если поток заблокирован в собственном коде, вы можете увидеть CannotUnloadAppDomainException ) и, как правило, плохой дизайн, IMO.

То, что вы пытаетесь сделать, очень нетрадиционно; Я бы пересмотрел подход все вместе. Если вам просто нужно выполнить какой-то код один раз на уровне домена приложения, есть много лучших способов сделать это, например, статические вычисления или флаг в кеше HttpRuntime. Просто обратите внимание на сценарии веб-сада и параллелизма.

Удачи.

0 голосов
/ 14 июля 2010

Я почти уверен, что нет способа выйти / принудительно остановить приложение WebForms из приложения.Однако единственный способ предотвратить запуск приложения - создать необработанную ошибку в вашем application_start.Это предотвратит запуск, и при следующем обращении к вашему приложению webForms application_start попытается снова.

...