129

我已经阅读了有关app_offline.htm可以放置在 .NET 2.0 应用程序根目录中的文件,该文件实质上将关闭应用程序并禁止请求任何其他页面。

我已将文件放在根目录中,并且我的网站仍在加载。我进入 IIS 中的默认文档并将其设置为app_offline.htm并且站点仍然加载(尽管这可能是一个缓存问题)

无论如何,有没有人在使用这个时遇到问题?难道我做错了什么?

4

7 回答 7

167

过去,我使用非常方便的 app_offline.htm 技巧来关闭/更新站点,没有任何问题。

确保您实际上将“app_offline.htm”文件放置在您在 IIS 中配置的网站的“根目录”中。

还要确保文件的名称与应有的完全一致: app_offline.htm

除此之外,您应该不需要对 IIS 进行任何其他更改,因为此文件(具有此特定名称)的处理由 ASP.NET 运行时而不是 IIS 本身(对于 IIS v6)处理。

但是请注意,尽管将此文件放在站点的根目录中会强制应用程序“关闭”并显示“app_offline.htm”文件本身的内容,但任何现有请求仍将获得真正的网站服务给他们。只有请求才会获得 app_offline.htm 内容。

如果您仍然遇到问题,请尝试以下链接以获取更多信息:

Scott Gu 的 App_Offline.htm

App_Offline.htm 并解决“IE 友好错误”功能

app_offline.htm 会停止当前请求还是仅停止新请求?

于 2009-07-20T13:23:40.433 回答
48

确保您的 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>
于 2011-02-06T20:59:06.080 回答
15

请注意,这在 IIS 6 和 7.x 以及 .NET 2、3 和 4.x 上的行为相同。

另请注意,当 app_offline.htm 存在时,IIS 将返回此 http 状态代码:

HTTP/1.1 503 Service Unavailable

这都是设计使然。这允许您的负载平衡器(或其他)看到服务器离线。

于 2012-04-30T17:54:12.293 回答
10

可能的权限问题

我知道这篇文章已经相当老了,但我遇到了类似的问题,我的文件拼写正确。

我最初在另一个位置创建了 app_offline.htm 文件,然后将它移到了我的应用程序的根目录。由于我的设置,我遇到了权限问题。

该网站表现得好像它不存在一样。在根目录中创建文件而不是移动它,解决了我的问题。(或者你可以在属性->安全中修复权限)

希望它可以帮助某人。

于 2011-12-19T14:51:36.420 回答
4

确保它app_offline.htm位于 IIS 中虚拟目录或网站的根目录中。

于 2009-07-20T13:09:26.480 回答
4

确保文件扩展名在资源管理器中可见并且文件名实际上是

app_offline.htm

不是

app_offline.htm.htm

于 2017-03-05T02:42:46.563 回答
1

我遇到了一个与原始问题非常相似的问题,我花了一点时间才解决。

万一其他人正在开发 MVC 应用程序并找到进入该线程的方法,请确保您有通配符映射到已定义的适当 .Net aspnet_isapi.dll。一旦我这样做了,我的 app_offline.htm 就开始按预期运行。


IIS 6 配置步骤

在 IIS 应用程序属性上,选择虚拟目录选项卡。

在应用程序设置下,单击配置按钮。

在通配符应用程序映射下,单击插入按钮。

输入C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll,点击确定。

于 2015-02-12T19:45:13.973 回答