app_offline网站返回“服务不可用”。

时间:2013-06-16 15:58:25

标签: iis-7 app-offline.htm

我正在遵循Scott gu的伎俩,即在我的应用程序路径上放置App_Offline.htm页面以使其脱机 - http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx

但它似乎并不适用于我的某个网站。我将文件放在我的一个站点的IIS7中,所有流量都被重定向到它。

然而,在其他网站,同一台服务器等,我得到一个包含“服务不可用”的页面。

不知道我哪里错了 - 有什么想法吗?

6 个答案:

答案 0 :(得分:18)

我设法通过在web.config中输入以下代码来解决它:

<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />

        <defaultDocument>
            <files>
                <clear />
                <add value="index.html" />
                <add value="app_offline.htm" />
            </files>
        </defaultDocument>

        <httpErrors errorMode="Custom" existingResponse="Replace">
            <clear />
            <error statusCode="503" path="App_Offline.htm" responseMode="File" />
        </httpErrors>
    </system.webServer>
</configuration>

通过汇总来自Scott Gunpiaseck @ IIS ForumKurt Schindler的一些信息,我们找到了此修复程序。

答案 1 :(得分:10)

这是我的解决方案 - 请注意503 ......

    <httpErrors existingResponse="Replace" errorMode="Custom">
  <remove statusCode="404" subStatusCode='-1' />
  <remove statusCode="400" subStatusCode='-1' />
  <remove statusCode="500" subStatusCode='-1' />
  <remove statusCode="503" subStatusCode='-1' />
  <error statusCode="404" path="404.html" prefixLanguageFilePath="" responseMode="File" />
  <error statusCode="400" path="404.html" prefixLanguageFilePath="" responseMode="File" />
  <error statusCode="500" path="500.html" prefixLanguageFilePath="" responseMode="File" />
  <error statusCode="503" path="app_offline.htm" responseMode="File" />

</httpErrors>

答案 2 :(得分:1)

我最近遇到了一个关于MVC网站的问题,我设法通过在想要使用app_offline.htm文件时替换我最初使用的干净,最小的web.config来解决它。

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

如果我有更多的时间,我会通过web.config找到改变行为的确切内容,但这值得一试。

答案 3 :(得分:0)

这是您使用GUI进行操作的方式(请注意最后一行-这是您应该添加/编辑的那一行)

enter image description here

答案 4 :(得分:0)

最近在向我的一个网站添加app_offline.htm页面时遇到了同样的问题。

这里的所有答案都建议将503响应设置为相同的app_offline.htm,我已经有一个不同的503页面,并且真的不想摆弄它。

我还想知道为什么会这样。

503是由AspNetInitializationExceptionModule发送的,我假设如果asp.net运行时在网站根目录中检测到app_offline.htm文件,它将发送

503 Service Unavailable

,并且确实发送app_offline.htm的内容作为响应。

但是,由于它是错误响应,因此IIS错误处理开始执行:

<httpErrors existingResponse="Replace">

这里的Replace意味着,请忽略ASP.NET向您发送的任何内容,并使用您自己的503响应。通过像其他答案中所建议的那样指定同一页面(app_offline.htm),可以解决此问题。

解决此问题的另一种方法是更改​​existingResponse属性,例如:

<httpErrors existingResponse="Auto">

现在IIS尊重来自ASP.NET的响应并显示app_offline.htm文件的内容。

但是Auto也意味着可能会通过其他ASP.NET错误响应。

答案 5 :(得分:0)

您需要做的就是在使用app_offline.htm时将web.config重命名为web.config.bak之类的东西。