2011-05-23 100 views
6

從新鮮的MVC 3項目中,我修改了Index()操作來拋出異常。我期望顯示股票的Error.chhtml視圖,因爲我在web.config中設置了<customErrors mode="On" />。相反,我仍然從VS內跑出「黃色死亡屏幕」。MVC 3自定義錯誤不顯示

<system.web> 
    <customErrors mode="On" /> 
    ... 

My HandleError屬性從global.asax.cs全局設置。

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
    } 

...未經修改,按默認項目設置。我已經針對IIS Express和VS Dev Server運行。沒有任何東西導致自定義錯誤頁面出現。我錯過了什麼?

+0

它似乎與我剛'工作通過'設置,共享>被示出了當Error.aspx異常在應用程序中發生。我的Global.asax代碼就像它是什麼,我沒有'RegisterGlobalFilters'方法不像你的代碼。 – 2011-05-23 05:05:32

回答

1

您使用的是什麼Web服務器? IIS7使用web.config的不同部分...可能是您的問題。

參見此: What is the difference between customErrors and httpErrors?

+0

IIS Express大概是IIS7模擬 – 2011-05-26 04:16:20

+0

是的,我必須使用IIS Express與我的MVC3應用程序,以便我的開發錯誤消息的行爲與我的生產站點一致。 – ctorx 2011-05-27 14:51:27

8

我已經看到了同樣的問題,這是由於我添加<的customErrors模式= 「開」/ >到<根> \視圖\ Web.config中,而不是<根> \ Web.config

+0

你是一個聖人......非常感謝你發佈這個。 – eckza 2012-05-01 14:53:53

0
<system.web> 
    <customErrors mode="On" defaultRedirect="Error.html"> 
     <error statusCode="403" redirect="/Error403" /> 
     <error statusCode="404" redirect="/Error404" /> 
     <error statusCode="500" redirect="/Error500" /> 
    </customErrors> 
</system.web> 
<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" > 
    <remove statusCode="403"/> 
    <remove statusCode="404"/> 
    <remove statusCode="500"/> 
    <error statusCode="403" responseMode="ExecuteURL" path="/Error403" /> 
    <error statusCode="404" responseMode="ExecuteURL" path="/Error404" /> 
    <error statusCode="500" responseMode="ExecuteURL" path="/Error500" /> 
    </httpErrors> 
</system.webServer>