Сброс IIS на ASP.NET сайт при возникновении ошибки

#asp.net #iis #error-handling

#asp.net #iis #обработка ошибок

Вопрос:

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

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

мой вопрос: как я могу вызвать сброс IIS в приведенном ниже коде onError? я могу запустить iisreset или вызвать сбой iis, используя что-то вроде System.Environment.Exit (-1). какой предпочтительный метод сброса iis?

     Protected Overrides Sub OnError(ByVal e As EventArgs)
        LogException(Server.GetLastError())
        MyBase.OnError(e)
    End Sub
  

Комментарии:

1. похоже, вы хотите отключить ту же ветку, на которой вы сидите ?? 🙂 кстати, если вы перезапустите IIS, это покажет, что приложение недоступно в течение времени, в течение которого IIS перезапускается, и если по какой-либо причине IIS не удалось запустить снова, то ………..?? надеюсь, вам следует поискать что-то еще.

2. Возможно, к вам это не относится, но при перезапуске IIS (или перезапуске пула приложений) все сайты на этом сервере (или пуле приложений) сбрасываются, что также означает, что все сеансы (в памяти) теряются.

Ответ №1:

Во-первых, как указано другими, вам необходимо перезапустить ASP.NET приложение, а не IIS (веб-сервер). Двумя способами достижения этого могут быть

  1. Чтобы коснуться (изменить) web.config (аналогичной альтернативой является касание / изменение папки bin)
  2. Чтобы попросить AppDomain выгрузиться (используя HttpRuntime.Выгрузить AppDomain)

Ознакомьтесь с этой статьей, в которой обсуждается этот подход.

Я бы также посоветовал вам рассмотреть периодическую переработку пула приложений (возможно из конфигурации IIS) в качестве альтернативы. an

Комментарии:

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