2017-01-11 85 views
1

我正在致力於ASP.net MVC-5項目,我是一名初學者。截至目前,我知道MVC的基礎知識,並能夠顯示頁面併發布帖子並獲取請求。但我堅持一個問題,我得到「504網關超時錯誤」,我需要實現一個功能,如果客戶端得到'504網關超時錯誤'我應該能夠顯示一個特定的頁面,如「有問題」而不是標準錯誤。首先下面是我做到了。顯示「504網關超時錯誤」的自定義錯誤

<system.web> 
    <compilation debug="true" targetFramework="4.5.1" /> 
    <httpRuntime targetFramework="4.5" /> 
    <customErrors mode="On" redirectMode="ResponseRewrite"> 
    </customErrors> 
    </system.web> 

還有什麼我需要改變或補充。有人可以指導我在這裏。我迷路了。

+1

是你的服務器的代理服務器,並拋出504或你使用的是代理服務器? – Steve

+0

我只是一個初學者。你能告訴我如何找到答案。請原諒我的無知。 – Unbreakable

+0

什麼@Steve試圖得到的是,如果您的網站有一個前端代理(如負載平衡器),那麼負載平衡器是「響應」用戶/瀏覽器(這不是你的應用程序/網站) 。所以問題是你是否能控制這個代理。雖然它似乎有一個應用程序問題,它不會「及時」響應(無論在代理中設置了超時值)。 'user' <-->'負載平衡器/代理'<--->您的網站/應用程序..老闆... – EdSF

回答

2

如果你的ASP.NET MVC應用程序由IIS(或另一個代理服務器)託管,然後由IIS返回504錯誤併發送到瀏覽器,因爲您的應用程序沒有及時響應請求。IIS已超時(爲每個網站配置)並且如果t他到達了,然後504返回。

在這種情況下,您不能在應用程序中定義自定義錯誤頁面,因爲它沒有反應。

Yout可以將IIS配置爲服務器自定義錯誤頁面。這video tutorial顯示如何做到這一點。

+0

那麼,如何在發生這種情況時顯示頁面? – Unbreakable

+0

@Unbreakable config IIS – Steve

+0

任何鏈接請問如何爲初學者配置?真的很感謝幫助。 – Unbreakable

0

ASP實際上並不返回這些頁面,實際上是IIS。

Check out this SO on configuring IIS to let you return custom error pages


基本上你需要配置這些設置:

<system.web> 
    <customErrors mode="On" defaultRedirect="~/Error"> 
     <!--Use whatever paths you need here, along with the accompanying status code --> 
     <error redirect="~/Error/NotFound" statusCode="404" /> 
    </customErrors> 
</system.web> 

,並創建一個控制器來處理這些錯誤,就像這樣:

public class ErrorController : Controller 
{ 
    public ViewResult Index() 
    { 
     return View(); 
    } 
    public ViewResult NotFound() 
    { 
     Response.StatusCode = 404; 
     return View(); 
    } 
} 

隨着無論您需要哪種視圖來匹配Action。

+0

您可以在發佈的鏈接的答案中解釋什麼是'redirect =「〜/ 404Redirect /」'。我是否需要製作一個控制器和一個視圖。或只是視圖就足夠了? – Unbreakable

+0

如果您希望MVC處理它,您需要一個控制器。 我將鏈接更改爲更好的鏈接,請檢查此鏈接。 –

+0

我會試試看,並會回覆給你。只是一件小事。做,我也需要對IIS或其他東西進行任何更改。我將更改配置文件,添加控制器並相應地添加視圖。我是否需要打開IIS服務器並進行任何修改。 – Unbreakable