2012-03-15 535 views
0

我有一個小Try Catch塊,將告訴用戶更詳細的信息時,無效數據傳遞給我的應用程序:顯示詳細的錯誤信息

try 
{ 
    //do something that throws an exception because of invalid data 
} 
catch (Exception ex) 
{ 
    throw new Exception("You have invalid data"); 
    //throw ex; 
} 

當我與無效數據在本地運行的應用程序,它拋出的Exception預期:

You have invalid data 

然而,當我把它發佈到服務器時,它只會扔Exceptions喜歡本作的完全相同的錯誤:

There was an error processing the request. 

我仍然可以運行具有有效數據的代​​碼,所以我知道一切工作正常。

有沒有別的東西,我必須添加到我的web.config

這是我現在有:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <httpErrors errorMode="Detailed" /> 
    <asp scriptErrorSentToBrowser="true"/> 
</system.webServer> 
+0

你知道那醒目的範圍太廣'Exception'類將細節給你帶來更多的問題,而不是解決問題,不是嗎? (我甚至不會說的捕捉和投擲完全相同的類型的異常只是「信號」的錯誤條件的東西) – DotNetStudent 2012-03-15 17:40:13

+0

,所以如果我'catch'特定的異常類型,將工作? – Greg 2012-03-15 17:46:54

+0

兩個問題:(1)IIS(2)的版本,如果7+如何配置IIS - 經典或集成? – Arun 2012-03-15 18:04:11

回答

0

你真不該顯示你的網站訪問者這樣的例外。

如果您要驗證的用戶數據,然後用form validation做到這一點,在用戶界面級別。

Exceptions are for dealing with exceptional circumstances。如果您的數據不是來自您的用戶,而是導致了一些特殊情況,那麼您的用戶可能不需要知道詳細信息。在這種情況下,通常會顯示一個帶有某種通用「技術錯誤」消息的頁面,該消息爲該問題道歉並確保他們正在查看該消息。

如果你想看到在開發過程中您的服務器上的異常,那麼你應該設置自定義錯誤關閉在web.config

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