2

ReceiverのFaultCodeをスローしていますが、クライアントは応答の障害コードとして「s:Server」を返しています。「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"));

誤ったSOAP1.1フォールトコード値を生成する.NETWCFフォールトに対する受け入れられた回答を参照してください

編集:http://schemas.xmlsoap.org/soap/envelope/投稿した障害メッセージの名前空間は、SOAP1.1に基づくバインディングを使用していることを示しています。SOAP 1.1は、VersionMismatch、MustUnderstand、Client、およびServerの障害コードのみをサポートします。SOAP 1.2は、VersionMismatch、MustUnderstand、DataEncodingUnknown、Sender、およびReceiverをサポートしています。送信者障害コードを指定できない理由は、バインディングが原因である可能性があります。代わりに、クライアント障害コードを指定してみてください。障害コードリストはhttp://msdn.microsoft.com/en-us/library/system.servicemodel.faultcode.aspxから入手しました。備考のセクションを参照してください。

于 2011-09-14T17:59:04.263 に答える