对于WCF也学习了一段时间,但是就是一直没有好好学一下,但是我对它的兴趣还是很大的,我觉得这个设计真是太好了,它可以统一 windows下的通信方式,而且仅仅通过改一下配置文件就可以改变通信方式,它是微软对SOA的一种架构设计,可以好好学一下。
#T#dotnet3.0是在 dotnet2.0的基础上加了几个功能块,WCF、WF、WPF、CardSpace,对于WCF说起来也很好理它的概念,首先有服务器端程,再有就是服务器端程序宿主,最后是客户端程序。在WCF中,如果没有指定,服务端的WCF异常不会传递到客户端,如:在等于0时,客户端根本不知道异常的原因据,也即"Divsionbyzero!"WCF异常信息不会传到客户端。
- [ServiceContract]
- publicclassCalculatorService
- ...{
- [OperationContract]
- intDivide(inta,intb)
- ...{
- if(b==0)thrownewException(“Divisionbyzero!”);
- returna/b;
- }
- }
在最简单的情况下,我们可以使用空FaultException(它只包含一个string字符串,称为错误原因),如下所示:
- [ServiceContract]
- publicclassCalculatorService
- ...{
- [OperationContract]
- intDivide(inta,intb)
- ...{
- if(b==0)thrownewFaultException(“Divisionbyzero!”);
- returna/b;
- }
- }
当然,我们可以定义强类型的WCF异常信息,并在方法上运用FaultContractAttribute来指定它,如下所示:
- [DataContract]
- publicclassMathFault
- ...{
- [DataMember]
- publicstringoperation;
- [DataMember]
- publicstringdescription;
- }
- [ServiceContract]
- publicclassCalculatorService
- ...{
- [FaultContract(typeof(MathFault))]
- [OperationContract]
- intDivide(inta,intb)
- ...{
- if(b==0)
- ...{
- MathFaultm=newMathFault();
- m.operation=”/”;
- m.description=”Divisionbyzero!”;
- thrownewFaultException
(m); - }
- returna/b;
- }
- }
注意:不能用XmlSerializer来序列化Fault相关的对象实例,即使在其上使用了XmlSerializerFormatAttribute属性。
当前名称:常见WCF异常问题处理方案
网址分享:http://www.shufengxianlan.com/qtweb/news31/454681.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联