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