1
我们正在运行IIS7 & .net 4.0。当由于长时间运行的请求而导致服务器超时时,会显示错误页面,但错误代码仅为500,而不是我期望的408或可能的503。如果超时,我们想要显示不同的错误页面,但是如果它只给出了500错误,我不能在<customErrors>
部分配置它。这是一个配置问题?为什么服务器超时时IIS会返回500状态码?
我们正在运行IIS7 & .net 4.0。当由于长时间运行的请求而导致服务器超时时,会显示错误页面,但错误代码仅为500,而不是我期望的408或可能的503。如果超时,我们想要显示不同的错误页面,但是如果它只给出了500错误,我不能在<customErrors>
部分配置它。这是一个配置问题?为什么服务器超时时IIS会返回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错误,而不到Response.End()。鉴于你的问题,我不确定你是否想要做一个重定向,而不是显示一个错误页面,它本身会输出503而不是上面的内容。
它真正的ASP.NET返回500状态,IIS只是传递它。
+1 for ASP.NET返回500。 – 2011-03-22 07:45:35