17

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

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

4

4 回答 4

12

遇到了同样的问题,但我刚刚设法在 .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。

于 2011-02-10T11:36:56.917 回答
10

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

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

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

于 2011-07-27T04:19:20.480 回答
4

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

于 2010-02-16T09:54:14.573 回答
0

据我所见,错误页面保存在 %SystemDrive%\inetpub\custerr\<LANGUAGE-TAG>\<HTTP-CODE>.htm

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


编辑

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

于 2010-02-16T10:00:35.730 回答