WCF FaultException <string>命名空间

时间:2017-05-10 01:13:27

标签: c# wcf biztalk

当出现故障时,我遇到了从WCF服务返回命名空间的问题。作为删除基于BizTalk的WCF服务的一部分,我试图使用vanilla C#WCF构建相同服务的精确副本。

在基于BizTalk的服务中,错误消息包含'xmlns="http://schemas.microsoft.com/2003/10/Serialization/'部分中的命名空间<Detail>。但是我的C#WCF服务错误消息它缺少这个命名空间

BizTalk服务错误消息

       <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
        <s:Header />
        <s:Body>
        <s:Fault>
         <s:Code>
            <s:Value>s:ValidationError</s:Value>
            <s:Subcode>
               <s:Value>s:ItineraryNameInvalid</s:Value>
            </s:Subcode>
         </s:Code>
         <s:Reason>
            <s:Text xml:lang="en-AU">'Itinerary Name 'EEE' is invalid.'</s:Text>
         </s:Reason>
         <s:Detail>
            <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">'Itinerary Name 'EEE' is invalid.'</string>
         </s:Detail>
      </s:Fault>
   </s:Body>
</s:Envelope>

但是在基于C#的WCF服务命名空间中,用于&#34; <Detail><string missing namespace?>&#34;不见了。

C#WCF错误消息

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
   <s:Header />
   <s:Body>
      <s:Fault>
         <s:Code>
            <s:Value>s:ValidationError</s:Value>
            <s:Subcode>
               <s:Value>s:ItineraryNameInvalid</s:Value>
            </s:Subcode>
         </s:Code>
         <s:Reason>
            <s:Text xml:lang="en-AU">'Itinerary Name 'EEEE' is invalid.'</s:Text>
         </s:Reason>
         <s:Detail>
            <string>'Itinerary Name 'EEEE' is invalid.'</string>
         </s:Detail>
      </s:Fault>
   </s:Body>
</s:Envelope>

代码

catch (ValidateException ex)  {

                     string messsage = ex.Message;

                     var fcs = new  FaultCode(ex.FaultSubCode);
                     var fc = new FaultCode(ex.FaultCode,fcs);
                     var fr = new FaultReason(messsage);

                     throw new FaultException<string>(messsage, fr, fc);
                 }

添加这个缺少的命名空间的任何线索或想法都会受到赞赏吗?

0 个答案:

没有答案