我有一個web服務,如果合適,發出錯誤消息。如何在Web服務中使用條件進行調試?
我希望這些錯誤消息在生產模式下非常有限(「內部崩潰」),並且在調試模式下非常全面。
我想過使用[Conditional("DEBUG")]
,但它只適用於方法返回void。
我是否真的必須在我的錯誤信息或黑色神祕的魔術中使用#ifdef
(如使用所述條件方法告訴web服務對象進入「調試模式」,這對我來說似乎相當難看,因爲它是imho不是對象應該知道的東西)?
有沒有我不知道的技巧或適當的方法?
我有一個web服務,如果合適,發出錯誤消息。如何在Web服務中使用條件進行調試?
我希望這些錯誤消息在生產模式下非常有限(「內部崩潰」),並且在調試模式下非常全面。
我想過使用[Conditional("DEBUG")]
,但它只適用於方法返回void。
我是否真的必須在我的錯誤信息或黑色神祕的魔術中使用#ifdef
(如使用所述條件方法告訴web服務對象進入「調試模式」,這對我來說似乎相當難看,因爲它是imho不是對象應該知道的東西)?
有沒有我不知道的技巧或適當的方法?
您可以在WCF中設置一個行爲,捕獲所有異常,然後刪除大部分錯誤信息(如果處於生產模式)。您可以使用web.config文件中的標誌來設置模式。
是的,我知道一個,但web服務本身正在發送特定的錯誤信息(客戶端要求)。目前我正在做的「黑魔法」技巧似乎比#ifdef更安全一些,但是webconfig解決方案不會改變我的代碼捕獲和轉發的異常,對吧? – Kheldar
您不需要重新拋出實際的異常,您可以將其記錄在服務器端,並拋出一個新的FaultException,其細節更少。一種可能性可能是按異常類型和要發送的消息設置字典。如果你沒有得到一個匹配,你可以發送「內部崩潰」消息。這樣你永遠不會發出太詳細的信息 – Mharlin
雖然,如果在調試模式下,我想發送詳細信息。在使用DEBUG模式時,它最終不是一個異常問題,而是寫入對象的東西。我認爲一種解決方案是將響應對象傳遞給條件方法,並通過它進行修改? – Kheldar
你最好在調試模式下在一些sample.cs文件中嘗試相同的過程,這樣你就可以找到問題... – Madhu
目前沒有問題。這是一個設計問題。 – Kheldar