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

为什么IIS在服务器超时时返回500状态码?,iis,httpexception,request-timed-out,Iis,Httpexception,Request Timed Out,我们正在运行IIS7和.NET4.0。当服务器由于长时间运行的请求而超时时,将显示错误页面,但错误代码仅为500,而不是我所期望的408或503。如果是超时,我们希望显示不同的错误页面,但如果只是给出500个错误,我无法在部分配置此页面。这是配置问题吗?您可以将这样的代码添加到global.asax.cs中 public class Global : System.Web.HttpApplication { protected void Application_Error(Object send

我们正在运行IIS7和.NET4.0。当服务器由于长时间运行的请求而超时时,将显示错误页面,但错误代码仅为500,而不是我所期望的408或503。如果是超时,我们希望显示不同的错误页面,但如果只是给出500个错误,我无法在
部分配置此页面。这是配置问题吗?

您可以将这样的代码添加到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个错误,其中没有响应.End()。考虑到你的问题,我不确定你是否想做一个重定向来显示一个错误页面,该页面本身会输出503而不是上面的

它实际上是ASP.NET返回500状态,IIS只是在传递它