先来说说SOAP消息中错误消息的包装结构,一条SOAP错误消息的大致形式如下:

    
      a:错误码
      。

首先是Fault元素,然后下面是错误消息相关联的子元素。在上一篇烂文中,老周曾介绍过FaultReason,这个类用于包装错误文本信息,并且支持多种语言。上面所展示的Fault元素中,faultstring子元素中的内容就是FaultReason类所指定的文本。

大伙伴们可能已经发现了,Fault元素下还有一个叫 faultcode 的子元素,它便是本文的主角,我们可以直接“望文生义”地将其翻译为错误码。错误码是干吗的?大伙应该知道 HTTP 中的错误代码,如我们经常看到的 404- not found,道理也是一样的, SOAP 消息中的错误码就是用来对某一类错误进行标识的,通常用一些简洁的短语,以便于识别。比如,一个错误命名为(错误码)RPTooLow,你一看到这条错误,就知道是因为用户的人品太差而导致操作失败。

Fault code的命名就是一个字符串,你可以自己来取,当然应当取一些有意义的名字,不能只有你自己看得懂而别人摸不着头脑,除非你的应用程序不打算对外公开错误信息。

在 WCF 中,可以用 FaultCode 类来定义错误码,然后把该类的实例传递给 FaultException 的构造函数就 OK 了。 

 

下面老周举一个例子,假设有一个服务,它的功能是计算一个整数值的平方。其服务协定声明如下。

    [ServiceContract]    public interface IDemo
    {
  &nb
        
		

网友评论