ASP.NET 2.0 - Как использовать app_offline.htm


120

Я читал о app_offline.htmфайле, который можно поместить в корень приложения .NET 2.0, который, по сути, закроет приложение и отключит запрос любых других страниц.

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

В любом случае, кто-нибудь сталкивался с проблемами при использовании этого? Я делаю что-то неправильно?


Есть ли страница Microsoft, которая документирует это?
Coops


Официальная документация: msdn.microsoft.com/en-us/library/ff925031.aspx
Брайан,

Я успешно использовал app_offline.htm, чтобы скрыть содержимое своего веб-приложения и отобразить временную страницу. Однако у меня возникают проблемы с просмотром исходных данных даже после удаления файла app_offline.htm. Ее вопрос: stackoverflow.com/questions/42979042/…
naz786

Ответы:


160

В прошлом я использовал очень удобный трюк app_offline.htm для закрытия / обновления сайтов без каких-либо проблем.

Убедитесь, что вы действительно помещаете файл «app_offline.htm» в «корень» веб-сайта, который вы настроили в IIS.

Также убедитесь, что файл назван в точности так, как должно быть: app_offline.htm

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

Однако имейте в виду, что, хотя размещение этого файла в корне вашего сайта заставит приложение "выключиться" и отобразить содержимое самого файла "app_offline.htm", любые существующие запросы по-прежнему будут обслуживать настоящий веб-сайт. им. Только новые запросы получат содержимое app_offline.htm.

Если у вас все еще есть проблемы, воспользуйтесь следующими ссылками для получения дополнительной информации:

App_Offline.htm Скотта Гу

App_Offline.htm и работа над функцией "IE Friendly Errors"

Будет ли app_offline.htm останавливать текущие запросы или только новые запросы?


6
@JackM - Нет проблем! На самом деле, я часто оставляю файл на своем веб-сайте и называю его чем-то вроде «xapp_offline.htm». Поэтому он просто сидит и ничего не делает. Когда я хочу обновить часть или весь сайт, я просто переименовываю файл и удаляю префикс «x» (обычно это делается через FTP). Это закрывает для меня сайт, я делаю обновление, а затем снова переименовываю файл с префиксом "x"!
CraigTP

@JackMarchetti - Будет ли это работать для веб-сайтов ASP.NET MVC, использующих маршрутизацию global.asax? Я проверил все предложения здесь, но мне все равно не удалось заставить это работать :(
Squig

Обновление к предыдущему комментарию: сейчас он работает и, должно быть, возникла какая-то проблема с кешированием. Я использовал <CTRL> + Refresh, но предположительно он кэшировался где-то еще.
Squig

Есть ли страница Microsoft, которая документирует это?
Coops

1
@CodeBlend Что ж, ссылка на блог ScottGu является официальной, но я полагаю, что наиболее «официальной» страницей Microsoft будет эта страница на MSDN: msdn.microsoft.com/en-us/library/vstudio/…
CraigTP

47

Убедитесь, что ваш файл app_offline.htm имеет длину не менее 512 байт. Нулевой файл app_offline.htm не действует.

ОБНОВЛЕНИЕ: новые версии ASP.NET/IIS могут вести себя лучше, чем когда я впервые написал это.

ОБНОВЛЕНИЕ 2: если вы используете ASP.NET MVC, добавьте в web.config следующее:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1
У меня было точное имя файла с пустым файлом, и это сработало - пустая страница отображалась независимо от используемого URL-
адреса

Проверьте эту ссылку, чтобы
узнать о проблеме с

Это особенно актуально для старых версий IE, которые могут заменять страницу собственным сообщением об ошибке
ChewToy

Скотт Гу также описывает это в своем блоге.
Мэтт

2
Я смог заставить свой сайт MVC перейти в автономный режим приложения, полностью заменив свой web.config на приведенный выше
Мэтью Лок

14

Обратите внимание, что это ведет себя одинаково в IIS 6 и 7.x, а также в .NET 2, 3 и 4.x.

Также обратите внимание, что когда присутствует app_offline.htm, IIS вернет этот код статуса http:

HTTP/1.1 503 Service Unavailable

Это все задумано. Это позволяет вашему балансировщику нагрузки (или чему-то еще) видеть, что сервер отключен.


1
Конечно, вы не хотите, чтобы ваш балансировщик нагрузки думал, что сервер отключен, потому что вы хотите отображать app_offline.htmего пользователям во время периода обслуживания?
Люк,

2
@Luke: лучший пример того, почему ответ 503 полезен: желательно, чтобы поисковый робот Google знал, что ваш веб-сайт в настоящее время не работает, а не решил проиндексировать ваш контент "сайт не работает" (и пометить ваш сайт как имеющий тонну дубликатов содержание). Кроме того, может быть полезно, если ваш CDN может определить, что ваш источник не работает, и таким образом избежать кеширования вашего контента.
Брайан

10

Возможная проблема с разрешением

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

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

Сайт работал так, как будто его там не было. Создание файла в корневом каталоге вместо его перемещения устранило мою проблему. (Или вы можете просто исправить разрешение в свойствах-> безопасность)

Надеюсь, это кому-то поможет.


4

Убедитесь, что он app_offline.htmнаходится в корне виртуального каталога или веб-сайта в IIS.


Это точно в корне. у меня есть свой inetput \ wwwroot [WebsiteDirectory] \ app_offline.htm
Джек Маркетти,

3

Убедитесь, что расширения файлов видны в проводнике, а имя файла действительно

app_offline.htm

не

app_offline.htm.htm


0

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

На всякий случай, если кто-то еще работает над приложением MVC и попадает в этот поток, убедитесь, что у вас определено сопоставление с подстановочными знаками для соответствующего .Net aspnet_isapi.dll. Как только я это сделал, мой app_offline.htm начал вести себя так, как ожидалось.


Шаги настройки IIS 6

В свойствах приложения IIS выберите вкладку виртуального каталога.

В разделе «Параметры приложения» нажмите кнопку «Конфигурация».

В разделе Карты приложений с подстановочными знаками нажмите кнопку Вставить.

Введите C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll, нажмите ОК.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.