我的應用程序使用WCF調用Web服務。呼叫失敗有多種原因:在客戶端上記錄WCF錯誤
- 故障
- 超時
- 連接丟失
- ...
我要記錄所有的這些錯誤。與其將每個調用包裝在try-catch中,我都希望在一個地方爲整個應用程序中的所有Web服務調用執行此操作。
不幸的是,IClientMessageInspector不會因超時和連接失敗而被調用。 是否有可用於集中注意所有異常的WCF可擴展性?
請注意,我不只是想將錯誤記錄爲像WCF Tracing這樣的文本。我想記錄:
- 服務名稱
- 方法名
- 時間
- Exception.ToString()
我願意接受的解決辦法。
你能提供您的通話之一的代碼示例的例子嗎?您目前是否正在創建,調用和處理每個電話的服務? – 2012-07-10 16:38:02
@JTorres,我實例化服務代理每個「工作單元」一次,每個實例有1-10個調用。這意味着我不能重複使用這個地方來添加異常處理程序。 – usr 2012-07-10 16:52:06
我相信我明白你在說什麼(創建一個服務引用,在上述服務上調用1到10個方法,銷燬引用)。你試圖做的是在這些方面添加一些形式的錯誤處理,而不用實際寫代碼中的錯誤處理,因爲(1)使代碼看起來很難看,(2)很多重新編碼需要做。不幸的是,我相信你很困難。我能想到的最接近「擴展」解決方案的方法是使用PostSharp之類的AOP實用程序,並使用適當的方面修飾您的調用。 @Trey Combs的解決方案可以改善設計。 – 2012-07-10 17:05:10