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, 也希望能分享一下。
參考:
Silverlight通過ISA訪問WCF服務
維護乙個老程式,在使用者增加isa作為區域網與網際網路之間的防火牆之後,在網際網路上的使用者就無法讓頁面中的silverlight訪問wcf服務了,但在與伺服器在同乙個區域網中的使用者使用照常。使用isa使得網際網路的使用者必須通過https協議訪問防火牆後的web伺服器,wcf服務host在其中,...
Silverlight載入xap 使用WCF
這個問題搞了我乙個晚上,終於找到原因了,但還不知道是不是最終的解決辦法,先用著吧。我利用mef動態載入乙個外部xap。被載入的xap使用了wcf,單獨測試都通過,就是載入報錯,通過反覆分析,原因是在應用程式 xap 包中找不到檔案 servicereferences.clientconfig 被載入...
了解Silverlight呼叫
html 頁面會呼叫 default.html.js 源 頁中的 createsilverlight sys.silverlight.createobjectex events 該呼叫將用到許多屬性,其中包括那些用於定義要呈現的 xaml silverlight 控制項外觀以及 onload 和 o...