【问题标题】:Custom Error Page for Http Error 503Http 错误 503 的自定义错误页面
【发布时间】:2011-01-17 07:57:12
【问题描述】:

我需要为我的 asp.net 网站产生的 503 错误发送自定义错误页面。我试图通过关闭应用程序池(不起作用)并用请求淹没我的应用程序来模拟这种情况。即使 IIS 向我发送了默认的 503 错误页面,并且即使我尝试在 IIS 和 ASP.NET 中为此错误代码设置自定义 URL,它仍然返回给我默认的 503 错误页面!

如果有人能告诉我 IIS 发送的默认 503 错误页面保存在哪里,我将不胜感激。

【问题讨论】:

    标签: asp.net iis-7 http-status-code-503


    【解决方案1】:

    看看HttpContext.Current.Response.TrySkipIisCustomErrors。只是一个建议。

    【讨论】:

    • 是的,我也试过这个。但是当应用程序池关闭时,这将不起作用。
    • 好吧,这就是我现在所得到的。处理 IIS7 自定义错误的愿望小于零。今年我已经修复了 asp.net 的 10 年历史的自定义 403 错误页面错误。 codeproject.com/Articles/39062/…祝你好运..
    【解决方案2】:

    据我所知,错误页面保存在 %SystemDrive%\inetpub\custerr\\.htm

    您可以在 iis7 mmc 中为每个网站配置自定义错误页面。


    编辑

    在 503 的情况下,显然无法通过 http.sys - 您得到的唯一选择是发送默认的 http 503 错误消息或终止 tcp 级别的连接。 p>

    【讨论】:

      【解决方案3】:

      遇到了同样的问题,但我刚刚设法在 .NET 应用程序中使用经典 ASP 保存页面为我们工作(我不确定它是否适用于 apsx):

      1. 确保在 IIS 中启用经典 ASP。值得一读:http://blogs.iis.net/bills/archive/2007/05/21/tips-for-classic-asp-developers-on-iis7.aspx

      2. 创建一个名为 Offline.asp 的经典 ASP 文件,并将其放在您网站的根目录中,内容如下:

        <%
        
        Response.Status = "503 Service Unavailable"
        Response.CacheControl = "no-cache"
        Response.AddHeader "Pragma", "no-cache"
        Response.Expires = -1
        
        %>
        
        <!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=iso-8859-1">
                <meta name="robots" content="noindex,nofollow" />
                <title>Sorry, we're down for essential maintenance</title>
            </head>
            <body><h1>Sorry, we're down for essential maintenance</h1></body>
        </html>
        
      3. 现在在 IIS7 管理器中进入错误页面管理部分,添加自定义错误页面,如下所示:

      现在,只要 IIS 收到 503,它就会将 Offline.asp 的内容以及 503 代码发送到浏览器(这是重要,因此搜索引擎不会列出您的错误页面!)

      现在,如果您想让您的应用程序脱机,您只需设置一个简单的重定向规则,将所有内容重定向到 Offline.asp。

      【讨论】:

      • 我刚刚用一个 aspx 文件实现了同样的功能。为了简单起见,我将服务器端代码放在了 aspx 文件中。
      • 这在应用程序池停止时也不起作用。如果应用程序池超载,我不确定它是否会起作用,因为当你想要它时很难重新创建这种情况。
      • 有人知道 mvc 应用的解决方案吗?
      • 如果您有意停止 IIS,那么您可以让控制台应用在此过程中在 Web 端口上提供维护页面
      • 如果应用程序池已停止,您可以通过在应用程序的根目录中放置一个名为 app_offline.htm 的文件来提供自定义错误 503 页面。
      【解决方案4】:

      您无法自定义默认的 503 服务不可用错误消息。这通常在应用程序池由于某种原因不可用时返回。

      它发生时间的描述表明它直接来自 http.sys 并且互联网上的所有内容似乎都同意它无法更改。我查看了 http.sys 注册表设置,那里没有任何用处。

      http://technet.microsoft.com/en-us/library/cc781893(WS.10).aspx

      【讨论】:

      猜你喜欢
      • 2011-06-07
      • 2014-05-14
      • 2011-03-26
      • 2013-02-13
      • 2011-07-22
      • 2016-12-03
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多