2011-07-29 90 views
0

超過一半我目前在工作的網絡服務項目更多,我的客戶決定通知我剛纔說我永遠不能拋出異常到客戶端應用程序。問題是,直到現在,每當有驗證,數據庫或任何其他類型的錯誤時,我都會拋出FaultException異常。我將顯然需要改變這種行爲而沒有進一步的問題,但問題是我不知道要替換它。該服務有4-5端點其返回不同的DataContract結構,所以我想到了設計具有布爾基類(表示失敗或成功)和object(我會用它來發送序列化的例外,如果他們拋出)領域並使所有其他DataContracts繼承此結構。但我不確定這是最好的選擇。你建議我做什麼?WCF,異常和繼承

回答

1

這個要求可能是由於這樣的事實Silverlight的消費者應該訪問,除非他們切換到HTTP客戶端堆棧(隨其自身的缺點),它不能處理以適當的方式對這些例外的服務。

我們已經通過包括故障出在需要由客戶來檢查每一個服務方法簽名參數解決了這個問題。這實際上聽起來比實際上更糟糕。

+0

爲可在我的情況很好地工作是個好主意,但實際上這聽起來不像是太優雅... – User

+1

以下是關於主題的文章http://msmvps.com/blogs/theproblemsolver/存檔/ 2009/1月27日/返回的異常信息至A-Silverlight的客戶通wcf.aspx –

+0

謝謝!那麼,我想我必須真正使用這種方法。我從來沒有想過這個問題......它可能不是太高雅了,但如果客戶想要的東西,優雅的這個要求就不會被提出反正...所以,去上班改變每一個簽名! – User

1

這將肯定對返回一些服務運營工作。所以如果你只有這樣的操作,就像你提出的那樣使用它:嘗試在服務操作中捕獲並在返回的數據合同中包裝異常。

怎麼樣有一個void返回類型的服務業務?你也可以嘗試catch,但是如何將狀態/錯誤返回給客戶端?你想在你的應用中使用這種場景嗎?

+0

是的,我甚至沒有想過這個。我有幾種'void'方法... – User

+0

將「好」數據與「壞」數據混合。 –