app_offline.htm文件不起作用

时间:2013-08-06 12:05:42

标签: deployment iis-7 app-offline.htm

我多年来一直在和它斗争,但我无法让它发挥作用。

我曾经说过的每个博客/网站都说你在IIS中没有什么需要做但这可能不正确,因为有多个网站配置,如应用程序,虚拟目录,简单的php / asp网站,虚拟。

有人可以向我解释一下IIS7中的设置需要什么。

我有:

  • 检查文件拼写:app_offline.htm
  • 确保文件至少为512字节(在随机网站上看到)
  • 确保它实际上位于应用程序/网站的根目录
  • 检查我可以直接浏览文件
  • 确保应用程序池框架设置为v2.0或v4.0
  • 确保将上述应用程序池分配给我的网站
  • 在IIS的新网站中尝试过此操作,其中app_offline.htm是根目录中唯一的文件。

我设置了多个我测试过的网站,即:

  • MVC3 Web应用程序
  • PHP简单网站
  • 经典ASP简易网站
  • Webforms网站
  • Webforms Application
  • 上述网站中的虚拟文件夹
  • 上述网站内的申请

以上所有方法都有效,并且放置app_offline.htm绝对没有任何效果。

请有人提供一些清晰度。

8 个答案:

答案 0 :(得分:14)

我最近遇到了与app_offline文件相同的问题,而我遇到的真正问题是windows被设置为隐藏已知的文件扩展名。因此,当创建文件app_offline.htm时,我认为名称是正确的,但是Windows隐藏了扩展名.txt。

答案 1 :(得分:4)

创建一个包含以下内容的web.config文件

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

希望有所帮助。

答案 2 :(得分:2)

我也在这个问题上苦苦挣扎。

与其他答案中的前述标准一起。事实证明,文件类型必须专门指定 .htm NOT .html

答案 3 :(得分:1)

我有同样的问题,虽然我无法解决,但我找到了一个合理的解决方法。我添加了相同的文件,但将“appoffline.htm”命名为根目录并永久保留在那里。

当我需要使应用程序脱机时,我使用网站的IIS HTTP重定向设置将所有传入请求重定向到appoffline.htm(确保勾选“将所有请求重定向到确切目标”)。

答案 4 :(得分:0)

所以我从来没有找到解决这个问题的方法,但我找到了替代我想要实现的目标。

基本上,我想展示一个特定的&#34;离线&#34;每个应用程序的页面,它将在网站脱机时显示。这就是我做的......

我创建了一个名为&#34; _offline&#34;在IIS中。然后我添加了一个通用&#34;赶上所有&#34;端口绑定:80并将主机名留空。在接受此绑定之前,您可能需要禁用当前的默认网站。

创建一个index.html页面并在其中放置您要显示的内容,并将其作为&#34; _offline&#34;的默认页面推送。我将在下面添加一些可以很好地运行的脚本。

现在您可以通过关闭网站进行测试,您应该会看到新的索引页面。如果您无法关闭网站,请在您的主机文件中添加绑定,例如&#34; testdomain.com&#34;并指向您的服务器。然后在浏览器中输入该内容即可显示您的离线页面。

请记住,只要您的IIS无法在该地址找到活动网站,此页面就会显示。根据您的设置,这可能会或可能不会被接受,在这种情况下您不应该使用此方法。

现在是我的索引页面。我放了一些javascript来确定用户试图访问哪个网站,然后显示部分HTML。我还有一个倒计时,每隔10秒就会运行并尝试刷新页面。

无论如何,不​​是理想的结果,但它确实有效。

&#13;
&#13;
<!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>
&#13;
&#13;
&#13;

答案 5 :(得分:0)

还需要存在以下处理程序:

ExtensionlessUrlHandler-Integrated-4.0

答案 6 :(得分:0)

确保在IIS管理器中的网站“属性”上创建了“应用程序”名称。属性>目录>应用程序设置>应用程序名称。 在IIS V6.0中测试过

答案 7 :(得分:0)

尝试从一个简单的app_offline.htm文件开始,例如

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

查看是否可以解决问题。就我而言,问题是app_offline.htm文件的文件编码是“带BOM的UTF-8”,而不是普通的UTF-8。