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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值