Файл app_offline.htm не работает

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

Каждый блог / сайт, на котором я тоже был, говорит, что в IIS вам ничего не нужно делать, но это не может быть правильным, поскольку существует несколько конфигураций веб-сайтов, таких как приложение, виртуальный каталог, простые сайты php / asp, vitual.

Может кто-нибудь, пожалуйста, объясните мне, как должна выглядеть установка в IIS7.

Я имею:

  • Проверено правописание файла: app_offline.htm
  • Убедился, что файл был не менее 512 байт (видел это на случайном сайте)
  • Убедился, что это на самом деле в корне приложения / сайта
  • Проверено, что я могу перейти непосредственно к файлу
  • Удостоверился, что структура пула приложений была установлена ​​на v2.0 или v4.0
  • Убедитесь, что указанный выше пул приложений был назначен моему веб-сайту.
  • Попробовал это на новом сайте в IIS, где app_offline.htm был единственным файлом в корне.

У меня настроено несколько сайтов, с которыми я тестировал, а именно:

  • Веб-приложение MVC3
  • PHP простой сайт
  • Классический ASP Простой Сайт
  • Веб-сайт Веб-сайт
  • Приложение Webforms
  • Виртуальные папки на указанных сайтах
  • Приложения на вышеуказанных сайтах

Все вышеперечисленное работает, и размещение app_offline.htm абсолютно ничего не делает.

Пожалуйста, кто-нибудь может дать некоторую ясность.

9 ответов

Решение

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

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

Я создал сайт, который я назвал "_offline" в IIS. Затем я добавил общую привязку "поймать все" для Port: 80 и оставил имя хоста пустым. Возможно, вам придется отключить ваш текущий веб-сайт по умолчанию, прежде чем эта привязка будет принята.

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

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

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

Теперь для моей страницы индекса. Я добавил немного JavaScript, чтобы определить, к какому сайту пытается обратиться пользователь, а затем раскрыл часть HTML-кода. У меня также есть обратный отсчет, который пытается обновить страницу каждые 10 секунд.

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width = device-width">
<title>Under Maintenance</title>
</head>
<style>
body{
color:#014795;
}
.container{
max-width:650px;
margin:auto;
font-size:18px;
font-family:Arial, Helvetica, sans-serif;
padding:20pt;
text-align:center 
}
#logo img {
max-width:100%;
}
a {
color: inherit;
text-decoration: none;
}
a:hover {
color: inherit;
text-decoration: none;
}
</style>
<body>
<table class="container">
<tr>
 <td>
  <span id="logo"></span>
  <p>This site is currently under maintenance and will be available shortly.</p>
  <p>We apologize for any inconvenience caused.</p>
   <table  style="text-align:left;margin:auto;">
    <tr><td>Telephone:</td><td><a href="tel:+27111111111">+27 11 11 1111</a></td></tr>
    <tr><td>Fax:</td><td>+27 11 111 2222</td></tr>
    <tr><td>Email:</td><td><a href="mailto:support@fubar.com">support@fubar.com</a></td></tr>
   </table>
   <p>We will automatically try to reconnect you in <span id="timeleft"></span> seconds</p>
 </td>
</tr>
</table>
<script type="text/javascript">
var refreshEvery = 10;
var currentSec = 0;

var timer = setInterval(function() {
    currentSec++;
    if (currentSec >= refreshEvery) {
        clearInterval(timer);
        location.reload();
    }

    document.getElementById("timeleft").innerHTML = "" + (refreshEvery - currentSec);
}, 1000)

document.getElementById("timeleft").innerHTML = "" + (refreshEvery - currentSec);

// Use this site to create a base64 image http://www.base64-image.de/step-1.php
if (document.domain.indexOf("stacksnippets") >= 0) {
    // Cusomise the site here, you can also show hide html content.

 document.body.style.backgroundColor = "black";
 document.body.style.color = "white";
} else {
 // put default stuff here
}
</script>
</body>
</html>

Недавно у меня возникла та же проблема с файлом app_offline, и реальная проблема заключалась в том, что окна были настроены на скрытие известных расширений файлов. Поэтому, когда был создан файл app_offline.htm, я подумал, что имя было правильным, но в Windows скрывалось расширение.txt.

Создайте файл web.config со следующим содержимым

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

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

Я тоже немного боролся с этой проблемой.

Наряду с вышеупомянутыми критериями в других ответах. Оказывается, что тип файла ДОЛЖЕН быть указан специально .htm NOT .html.

Попробуйте начать с свежего и простого app_offline.htm файл, как

<html><body>offline</body></html>

чтобы увидеть, решит ли это проблему. В моем случае проблема заключалась в том, что кодировка файлаapp_offline.htm файл был "UTF-8 с спецификацией", а не простой UTF-8.

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

Когда мне нужно перевести приложение в автономный режим, я использую параметр перенаправления HTTP IIS для веб-сайта, чтобы перенаправить все входящие запросы в appoffline.htm (установите флажок "Перенаправить все запросы в точное место назначения").

Убедитесь, что в диспетчере IIS в свойствах веб-сайта было создано имя приложения. Свойства> Каталог> Настройки приложения> Имя приложения. Протестировано в IIS V6.0

Также должен присутствовать следующий обработчик:

ExtensionlessUrlHandler-Integrated-4.0

Ни одно из приведенных выше решений не сработало для нас.

При тестировании на сервере с тем же файлом, но переименованным (app_offline.TEMPLATE.htm) сервер без проблем загрузил htm-страницу.

Это было решено путем удаления большого изображения в кодировке Base64 из файла. (используется как фоновое изображение)

The app_offline.htmфайл по-прежнему использует закодированный в Base64 значок значка и логотип компании.

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