【问题标题】:app_offline site returning "The service is unavailable."app_offline 站点返回“服务不可用”。
【发布时间】:2013-06-16 15:58:25
【问题描述】:

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

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

但是在其他站点、同一服务器等中,我得到一个包含“服务不可用”的页面。

不确定我哪里出错了 - 有什么想法吗?

【问题讨论】:

  • 我也遇到了同样的问题,你解决了吗?
  • 很遗憾,没有解决办法。
  • @DevDave 和业余爱好者,我已经解决了这个问题,请在此处查看我的答案:stackoverflow.com/a/25880018/61697

标签: iis-7 app-offline.htm


【解决方案1】:

我设法通过将以下代码放入我的 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 的一些信息找到了此修复程序。

【讨论】:

  • 对我来说关键的一点似乎只是我错过了 httpErrors 中 503 响应代码的行。其他更改似乎没有必要。
  • 是的,503 的 &lt;httpErrors&gt; 更改也是我所需要的。
  • 没有什么比谷歌搜索一个问题并找到一个 StackOverflow 答案更能链接到您六年前发布的解决方案,因为您显然以前遇到过这个问题并且忘记了您遇到过它以及您是如何解决它的 ;)跨度>
【解决方案2】:

这是我的解决方案 - 注意 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>

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      我最近在将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),可以解决问题。

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

      <httpErrors existingResponse="Auto">
      

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-16
            • 2016-04-20
            • 2012-08-15
            • 1970-01-01
            • 2014-04-17
            • 1970-01-01
            • 2020-05-20
            • 2021-06-06
            相关资源
            最近更新 更多