1. 程式人生 > >Silverlight 呼叫 WCF 如何處理錯誤

Silverlight 呼叫 WCF 如何處理錯誤

Silverilght 客戶端不支援 FaultException. 只會顯示一個 404 錯誤。所以,服務端丟擲的異常,在客戶端是無法直接通過序列化/反序列化傳遞得到的。但是可以改用下列一些方法來幫助從客戶端得到錯誤資訊:

1. 在 Service 端,將返回值物件重新設計,在其中新增錯誤資訊的欄位,傳遞回來。

2. 在 Service 端發生異常時,捕獲之,並使用 Session 儲存(同時可以做日誌),然後結果裡 return false.
    Silverlight 裡判斷返回 false 則去呼叫另一個 Service: GetLastError() 從 Session 中取出剛才儲存的異常資訊。

3. 修改 Service 介面,在引數里加一個 ref  引數用於返回錯誤資訊,客戶端同時判斷 e.Error 和 e.Ref引數 的值。

因為專案還在開發中,目前我採用的是第三個方法,僅增加一個 ref string errorMessage 引數即可,比較簡單。

另外最近在考慮的一個問題是,如何大幅度減少 WCF Service 的數量,改為設計儘量通用的服務介面。哪怕犧牲了強型別也值得,只要設計出自己的序列化/反序列化機制就行了。因為更新 WCF 引用實在是很麻煩,並且很容易出錯。如果是一個業務系統,資料表很多時,按傳統辦法會要求做更多的 Service 來做 CRUD 操作。在這方面如果哪位朋友有好的 idea, 也希望能分享一下。


參考:
http://silverlight.net/forums/p/18852/64012.aspx#64012%20

http://silverlight.net/forums/p/19875/94861.aspx#94861
http://silverlight.net/forums/p/17944/60019.aspx#60019
http://silverlight.net/forums/p/18885/64222.aspx#64222
http://silverlight.net/forums/p/11859/38066.aspx#38066