Файл 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 значок значка и логотип компании.