2011-03-14 111 views
1

我们正在运行IIS7 & .net 4.0。当由于长时间运行的请求而导致服务器超时时,会显示错误页面,但错误代码仅为500,而不是我期望的408或可能的503。如果超时,我们想要显示不同的错误页面,但是如果它只给出了500错误,我不能在<customErrors>部分配置它。这是一个配置问题?为什么服务器超时时IIS会返回500状态码?

回答

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只是传递它。

+0

+1 for ASP.NET返回500。 – 2011-03-22 07:45:35

相关问题