Каковы возможные причины, по которым App_Offline.htm не может остановить работу сайта?

Обычно я использую App_Offline.htm за перевод сайта в автономный режим. Но иногда, когда я это делаю, сайт просто зависает (как в: браузеры ждут вечно, сервер вообще не дает ответа). Похоже, это происходит на обновляемом сайте, когда я что-то изменяю, например, элемент управления, а потом, когда это происходит недостаточно быстро (сайт зависает), я помещаю App_Offline.htm в корень сайта.

В большинстве случаев это сразу сносит мой сайт. Но иногда это не так. В этих случаях я не могу просто остановить сайт (при перезапуске поведение продолжается). Остановка пула приложений не позволяет мне перезапустить тот же пул приложений. Пока единственное решение - перезапуск всей веб-службы IIS.

Я хотел бы предотвратить это. Это ошибка в IIS, которая не "нарушает все действия", когда App_Offline.htm найден? Я использую IIS 7 с Windows 2008 SP2 64 бит.

6 ответов

Решение

IIS не должен останавливать существующие действия, а только предотвращать прохождение новых запросов: остановит ли app_offline.htm текущие запросы или только новые запросы?

Похоже, вы описываете сценарий, в котором вы обновляете элемент управления, пытаетесь загрузить страницу, а IE застревает при загрузке. В этот момент вы бросаете app_offline.htm и ожидайте увидеть эту страницу немедленно.

Если вы делаете совершенно отдельный / новый запрос после размещения app_offline.htm на месте, то вы должны увидеть, как страница подходит. Однако существующий запрос не будет затронут, как указано выше.

Если возможно, попробуйте развернуть app_offline.htm файл до внесения контрольного изменения.

Я обнаружил, что мой файл web.config либо содержит ошибку, либо отсутствует. В этом случае app_offline.htm не обрабатывается.

Вот вещь Каждый раз, когда вы открываете.sln на сервере или обновляете код, он создает билет app_offline в корне. Это функция самого asp.net, которая предотвращает любой доступ, мешающий вашей разработке.

Удалите app_offline вручную каждый раз после открытия.sln.

надеюсь, это поможет. Благодарю.

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

Кроме того, я думаю, что вам придется перезапустить пул, чтобы app_offline.htm все равно работал эффективно.

Другая возможность - отсутствующий обработчик. Требуется следующий обработчик:

ExtensionlessUrlHandler-Integrated-4.0

Для устранения проблемы необходимо как минимум:

  • Подождите время ожидания вашего веб-сайта, чтобы убедиться, что все запросы завершены.
    • Фоновые процессы, запущенные из веб-запроса, будут означать дальнейшее увеличение времени ожидания после истечения времени ожидания веб-сайта.
  • Выгрузите любой неуправляемый код, подключившись к событиям DomainUnload или Application_End.

Я жду 3 минуты, пока App_Offline.htm вступит в силу, и это, похоже, позволило App_Offline.htm работать должным образом.

Другие вопросы по тегам