2013-11-21 76 views
7

如何更改錯誤路徑到我的控制器/動作httpErrorsMVC 5 HttpErrors + Controller/Action

我有這樣的代碼:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404"/> 
    <error responseMode="ExecuteURL" statusCode="404" path="Error/HttpRequestError"/> 
</httpErrors> 

但它不工作。空白頁面顯示並且未輸入操作。

我做錯了什麼?

P.S.我知道另一種解決自定義頁面錯誤的方法。但我想嘗試使用它。

謝謝!

回答

12

我解決問題。 web.config中的此代碼:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="404"/> 
    <error statusCode="404" responseMode="ExecuteURL" path="/Error/404"/> 
</httpErrors> 

現在ErrorsController/NOTFOUND行動進入(標有路由屬性附加傷害ActionName至404)。

+0

請注意,「ExecuteURL」區分大小寫! – Jester

+0

這種方法對我不起作用。我得到了ASP.net「無法找到資源。」錯誤頁面。我能夠直接訪問/ Error/404頁面。我在IIS Express和IIS中嘗試過。有小費嗎? – Sean

+0

@Sean這是一個正確的但重要的通知是,如果你有一個虛擬目錄路徑,或者你也必須填寫它,它將無法正常工作。我不知道,所以花了好幾個小時才找到爲什麼我不能工作。 – XzaR

1

你爲什麼不乾脆重定向的URL爲404

<customErrors mode="RemoteOnly" defaultRedirect="~/error"> 
    <error statusCode="404" redirect="~/Error/HttpRequestError" />  
</customErrors 
+2

其他重定向對CEO不好。 –

+0

@SergeyShoshin什麼是CEO?你是指SEO嗎? –

+0

哦,對不起。確切的SEO。 –

1

如果Sergey Shoshin的回答不起作用。

<httpErrors errorMode="Custom" existingResponse="Replace"> 
     <remove statusCode="404"/> 
     <error statusCode="404" responseMode="ExecuteURL" path="[optional virtual directories...]/Error/404"/> 
</httpErrors>