2011-09-14 59 views
1

我拋出一個Receiver的FaultCode,但客戶端收回「s:Server」作爲響應faultcode。 我怎樣才能得到「s:Receiver」的迴應?拋出faultcode(「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> 

回答

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")); 

見接受的答案.NET WCF faults generating incorrect SOAP 1.1 faultcode values

編輯:您發佈的錯誤消息中的http://schemas.xmlsoap.org/soap/envelope/名稱空間表示您正在使用基於SOAP 1.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的故障代碼列表。請參閱備註部分。

+0

+1我只是想寫相同的答案 –

+0

仍然 s:服務器 capdragon

+0

好的,我編輯了我的答案。 – luksan

相關問題