2011-03-14 75 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

相關問題