2012-01-26 81 views
0

我有一個web服務,如果合適,發出錯誤消息。如何在Web服務中使用條件進行調試?

我希望這些錯誤消息在生產模式下非常有限(「內部崩潰」),並且在調試模式下非常全面。

我想過使用[Conditional("DEBUG")],但它只適用於方法返回void

我是否真的必須在我的錯誤信息或黑色神祕的魔術中使用#ifdef(如使用所述條件方法告訴web服務對象進入「調試模式」,這對我來說似乎相當難看,因爲它是imho不是對象應該知道的東西)?

有沒有我不知道的技巧或適當的方法?

+0

你最好在調試模式下在一些sample.cs文件中嘗試相同的過程,這樣你就可以找到問題... – Madhu

+0

目前沒有問題。這是一個設計問題。 – Kheldar

回答

0

您可以在WCF中設置一個行爲,捕獲所有異常,然後刪除大部分錯誤信息(如果處於生產模式)。您可以使用web.config文件中的標誌來設置模式。

+0

是的,我知道一個,但web服務本身正在發送特定的錯誤信息(客戶端要求)。目前我正在做的「黑魔法」技巧似乎比#ifdef更安全一些,但是webconfig解決方案不會改變我的代碼捕獲和轉發的異常,對吧? – Kheldar

+0

您不需要重新拋出實際的異常,您可以將其記錄在服務器端,並拋出一個新的FaultException,其細節更少。一種可能性可能是按異常類型和要發送的消息設置字典。如果你沒有得到一個匹配,你可以發送「內部崩潰」消息。這樣你永遠不會發出太詳細的信息 – Mharlin

+0

雖然,如果在調試模式下,我想發送詳細信息。在使用DEBUG模式時,它最終不是一個異常問題,而是寫入對象的東西。我認爲一種解決方案是將響應對象傳遞給條件方法,並通過它進行修改? – Kheldar

相關問題