我想在我的MVC 3 Web應用程序中設置http自定義錯誤頁面。我已經添加了以下到我的web.config:httpErrors不重定向到正確的頁面與MVC 3
<httpErrors errorMode="Custom" defaultResponseMode="ExecuteUrl" defaultPath="/Error/404">
<clear />
<error statusCode="500" path="/Error/404"
</httpErrors>
當一個請求我預計這將用戶重定向my.domainname.com/Error/404出現500錯誤。
我有一個錯誤控制器,其中包含一個稱爲錯誤的操作,我已將404的請求映射到此操作。
當我強迫網站上的500錯誤(通過Chrome開發者工具的網絡選項卡驗證)我收到一個空白頁以下消息:
「該頁面無法顯示,因爲發生了內部服務器錯誤。 「
如果我從我的web.config中刪除httpErrors部分,那麼我會得到實際的異常消息。因此,我在web.config中的httpErrors部分必須工作,我只是不明白如何正確設置它。
這是我選擇的屬性,爲什麼清單:
errorMode =「自定義」:那麼,我可以看到自定義錯誤頁,並驗證它正在將其更改爲僅本地之前。
defaultResponseMode =「ExecuteUrl」:這應該允許我指定一個服務器相對url作爲路徑,這聽起來像我想要的,因爲我想要控制器操作。
defaultPath =「/ Error/404」:如果我沒有指定一個,我想要求的相對url。
編輯:
我應該補充說,該網站在IIS 7.5上運行。我也不希望使用這個標籤,因爲它被設計爲與IIS 6一起使用,並且應該用於IIS 7+。
對不起,我會更新我的問題。它確實與customErrors部分一起工作,但這不是一個理想的解決方案,因爲它們現在是一個遺留選項,並且設計用於IIS 6. – Aesir 2012-04-24 11:34:36
設置defaultResponseMode =「重定向」並將路徑設置爲絕對URL是否工作?我知道這不完全是你想要的,因爲使用相對路徑更好,但可能有助於調試問題。 – 2012-04-24 11:51:12
在這種情況下,我無法設置絕對路徑,因爲子域可能會有所不同,並可供用戶更改。所以my.domainname.com可以是test.domainname.com等。所以我需要的路徑是相對的。 – Aesir 2012-04-24 13:31:45