一千萬個為什麽

搜索

WCF Webservices和FaultContract - 客戶端接收SoapExc的FaultException <TDetails>

我正在開發一個WCF Web服務並在mvc2應用程序中使用它。 我的問題是我在我的方法上使用FaultContracts和自定義的FaultDetail,並且我正在謹慎地拋出錯誤,但是當客戶端收到異常時,它會收到一個正常的SoapException,而不是我從服務端拋出的FaultException。

這是一些代碼:

自定義故障詳細類:

[DataContract]
public class MyFaultDetails
{
[DataMember]
public string Message { get; set; }
}

服務合同的運作:

[OperationContract]
[FaultContract(typeof(MyFaultDetails))]
void ThrowException();

執行:

public void ThrowException()
{
var details = new MyFaultDetails { Message = "Exception Test" };
throw new FaultException(details , new FaultReason(details .Message), new FaultCode("MyFault"));
}

客戶端:

try
{
// Obv proxy init etc..
service.ThrowException();
}
catch (FaultException ex)
{
// stuff
}
catch (Exception ex)
{
// stuff
}

我期望的是捕獲FaultException,而不是跳過catch,並且使用SoapException類型的異常捕獲下一個catch。

我錯過了什麽嗎?

關於在wcf中使用faultcontracts我有很多線索,我所做的似乎很好。 我看了一下生成的wsdl和xsd,它們看起來很好。這是關於這種方法的片段:

 
      
      
      
    


      
      
        
      
      
        
      
      
        
      
    

有幫助嗎?

提前致謝

問候

亞歷山德羅

最佳答案

好的,我自己解決了。 正如我所說,一切都是正確的...我只是使用了錯誤的httpBinding(基本而不是ws)。 如果你不使用wsHttpBinding,那麽所有漂亮的FaultContract機制根本就不起作用。

謝謝你

問候

亞歷山德羅

轉載註明原文: WCF Webservices和FaultContract - 客戶端接收SoapExc的FaultException <TDetails>