2010-07-14 3 views
2

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

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

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

ответ

3

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

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

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

Удачи.

+0

Согласовано - в конце мы нашли альтернативный подход, который избегал проблемы с блокировкой файлов. –

0

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

+1

Дело в том, что ASP.NET не запускает событие Application_Start, если в первом запуске событие исключило исключение. – klashar