为什么IIS在服务器超时时返回500状态代码?

时间:2011-03-14 00:28:58

标签: iis httpexception request-timed-out

我们正在运行IIS7&amp; .net 4.0。当服务器因长时间运行请求而超时时,会显示错误页面,但错误代码只是500而不是408或可能是我期望的503。我们想要显示一个不同的错误页面,如果它是超时,但我不能在<customErrors>部分配置它,如果它只是给出500错误。这是配置问题吗?

1 个答案:

答案 0 :(得分:2)

您可以将这样的代码添加到global.asax.cs

public class Global : System.Web.HttpApplication
{
protected void Application_Error(Object sender, EventArgs e)
{
    Exception ex = HttpContext.Current.Server.GetLastError();
    if (ex != null && ex is HttpException && ex.Message == "Request timed out.")
    {
       HttpContext.Current.Response.StatusCode = 503;
       HttpContext.Current.Response.End();
    }
}
}

我发现这不能正常工作,但仍然返回500错误而没有Response.End()。鉴于您的问题,我不确定您是否要进行重定向而是显示一个错误页面,该页面本身会输出503而不是上面的内容。

它真的是ASP.NET返回500状态,IIS只是传递它。