Asp.net-Mvc

ASP.NET MVC 404 處理和 IIS7 <httpErrors>

  • April 22, 2014

再會!

我使用策略來處理這樣的 404 錯誤:ASP.NET MVC 2 和 IIS 7.0 的錯誤處理或這個:如何在 ASP.NET MVC 中正確處理 404?

簡而言之:我在Global.asax不添加任何路由規則的情況下將 404 作為異常處理,如果異常是 404,我會呈現帶有錯誤消息的特殊控制器\操作。

在 IIS6 上,它使用 ASP.NET 萬用字元映射。在集成模式下的 IIS7 上,我需要將以下內容添加到Web.config/error/HttpError404我的 404 頁面操作在哪裡):

   <httpErrors>
       &lt;remove statusCode="403" subStatusCode="-1" /&gt;
       &lt;remove statusCode="404" subStatusCode="-1" /&gt;
       &lt;error statusCode="404" prefixLanguageFilePath="" path="/error/HttpError404" responseMode="ExecuteURL" /&gt;
       &lt;error statusCode="403" prefixLanguageFilePath="" path="/error/HttpError403" responseMode="ExecuteURL" /&gt;
   &lt;/httpErrors&gt;

為什麼?路由在 IIS 集成模式和 IIS6 萬用字元映射上的工作方式不同?

提前致謝!

更新: 根據我的測試,似乎我的錯誤處理有效並且我的 404 操作被渲染,但似乎 IIS 看到 404 響應程式碼(我在我的 404 操作中以程式方式設置)並用預設錯誤替換我的頁面。

當我設置時,<httpErrors>我得到了兩次 404 頁面的命中:一個來自異常處理Global.asax,另一個來自 IIS。

這可能是原因嗎?

看來我已經通過設置來修復它Web.config

&lt;httpErrors existingResponse="PassThrough" /&gt;

引用自:https://stackoverflow.com/questions/3554844