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