Silverlight 调用 WCF 如何处理错误

2015-08-18 15:22:21来源:作者:人点击

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, 也希望能分享一下

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台