我有一個C#web窗體ASP.NET 4.0 Web應用程序使用URL的路由出於某種原因在system.web節中定義了自定義錯誤我的web.config完全被忽略,它會回落IIS錯誤。在IIS7上託管的ASP.NET應用程序忽略了自定義錯誤並回退到IIS錯誤
這被完全忽略
<system.web>
<customErrors mode="On">
<error statusCode="500" redirect="~/Error" />
<error statusCode="404" redirect="~/404" />
<error statusCode="403" redirect="~/Error" />
</customErrors>
</system.web>
這部分接管
<system.webServer>
<httpErrors>
<!--<clear />-->
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" subStatusCode="-1" path="/App1/404" responseMode="Redirect" />
<error statusCode="500" prefixLanguageFilePath="" path="/App1/Error" responseMode="Redirect" />
</httpErrors>
</system.webServer>
這將是一個小麻煩,除了通過它回落到IIS本地的,而不是我的應用它完全規避的事實Elmah正確記錄我的404例外。
編輯:只是爲了避免這樣的建議我只在customErrors停止工作後添加httpErrors配置,所以我會有任何東西。
我不明白這一點。對於404錯誤,似乎有一個使用這裏提出的「通配符路由」的常見解決方法:http://stackoverflow.com/questions/2704338/asp-net-4-0-web-forms-routing-default-wildcard - 路線。我還注意到,當您輸入以'.aspx'結尾的錯誤網址時,自定義404頁面會啓動。但是,如果我省略了擴展名,我將被重定向到IIS的默認錯誤頁面,就像你所說的那樣。我絕對不知道如何獲得自定義錯誤頁面,而不是404以外的其他錯誤。我很好奇你的問題將如何結束。 – Slauma 2010-07-13 13:56:44
我很高興聽到這種情況發生在別人身上,因爲在我意識到如何配置httpErrors之前,我幾乎處於茫然之中。 – 2010-07-13 14:38:41