11

我已经为此奋斗了很多年,但我就是无法让它发挥作用。

我去过的每个博客/网站都说在 IIS 中不需要做任何事情,但这不可能是正确的,因为有多个网站配置,例如应用程序、虚拟目录、简单的 php/asp 网站、vitual。

有人可以向我解释一下 IIS7 中的设置需要是什么样的吗?

我有:

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

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

  • MVC3 网络应用程序
  • PHP 简单网站
  • 经典 ASP 简单网站
  • 网络表格网站
  • 网络表单应用程序
  • 上述站点中的虚拟文件夹
  • 上述网站内的应用程序

以上所有方法都有效,放置 app_offline.htm 完全没有任何作用。

请有人提供一些澄清。

4

8 回答 8

13

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

于 2013-10-15T07:51:13.317 回答
7

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

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

希望有帮助。

于 2015-10-01T08:28:32.713 回答
6

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

连同其他答案中的上述标准。事实证明,必须专门指定文件类型.htm而不是.html

于 2016-09-21T13:10:45.663 回答
1

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

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

于 2015-03-03T15:36:51.460 回答
1

所以我从来没有找到解决这个问题的方法,但我确实找到了我试图实现的替代方案。

基本上,我想为每个应用程序显示一个特定的“离线”页面,该页面将在站点离线时显示。这是我所做的...

我在 IIS 中创建了一个名为“_offline”的网站。然后,我为 Port: 80 添加了一个通用的“catch all”绑定,并将主机名留空。在接受此绑定之前,您可能需要禁用当前的默认网站。

创建一个 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>

于 2017-10-12T08:25:45.610 回答
1

尝试从一个新鲜而简单的app_offline.htm文件开始,比如

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

看看是否能解决问题。就我而言,问题在于文件的文件编码app_offline.htm是“带有 BOM 的 UTF-8”而不是纯 UTF-8。

于 2019-10-16T18:02:15.240 回答
0

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

ExtensionlessUrlHandler-Integrated-4.0
于 2018-02-23T14:21:30.937 回答
0

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

于 2018-08-22T22:06:13.167 回答