2

我正在抛出接收器的故障代码,但客户端正在返回“s:服务器”作为响应故障代码。我怎样才能得到“s:Receiver”的响应?

我的代码:

throw new FaultException<System.ApplicationException>(new System.ApplicationException("My application broke"), new FaultReason("because i said so"), new FaultCode("Receiver"));

回复:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <s:Fault>
         <faultcode>s:Server</faultcode>
         <faultstring xml:lang="en-US">because i said so</faultstring>
         <detail>
            <ApplicationException xmlns="http://schemas.datacontract.org/2004/07/System" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="http://www.w3.org/2001/XMLSchema">
               ...
            </ApplicationException>
         </detail>
      </s:Fault>
   </s:Body>
</s:Envelope>
4

1 回答 1

3

尝试这个:

throw new FaultException<System.ApplicationException>(
  new System.ApplicationException("My application broke"), 
  new FaultReason("because i said so"), 
  new FaultCode("Receiver", "http://schemas.microsoft.com/ws/2005/05/envelope/none"));

请参阅生成不正确 SOAP 1.1 故障代码值的 .NET WCF 故障的已接受答案

编辑:http://schemas.xmlsoap.org/soap/envelope/您发布的错误消息中的名称空间表明您正在使用基于 SOAP 1.1 的绑定。SOAP 1.1 仅支持以下故障码:VersionMismatch、MustUnderstand、Client 和 Server。SOAP 1.2 支持:VersionMismatch、MustUnderstand、DataEncodingUnknown、Sender 和 Receiver。无法指定 Sender 故障码的原因可能是绑定造成的。请尝试指定客户端故障代码。我从http://msdn.microsoft.com/en-us/library/system.servicemodel.faultcode.aspx获得了故障代码列表。请参阅备注部分。

于 2011-09-14T17:59:04.263 回答