我需要從WCF異常拋出,而不顯示堆棧跟蹤到客戶端,只是消息的例外......WCF而不顯示堆棧跟蹤
拋出新的FaultException(「EX1」);
我平均有20個例外字符串。 如何實現它而不必每次投擲的FaultException用字符串參數,而是一個異常對象
FaultException_i i = 1...20
我需要從WCF異常拋出,而不顯示堆棧跟蹤到客戶端,只是消息的例外......WCF而不顯示堆棧跟蹤
拋出新的FaultException(「EX1」);
我平均有20個例外字符串。 如何實現它而不必每次投擲的FaultException用字符串參數,而是一個異常對象
FaultException_i i = 1...20
當使用WCF服務,你必須使用FaulException因爲它是處理錯誤的本地肥皂的方法。但是,並不是所有的異常都能正確實現wcf序列化。
異常詳細信息(包括堆棧跟蹤)不應該暴露給客戶端。 你可以很容易地關掉這個在配置:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyService"
behaviorConfiguration="MyServiceBehavior" >
....
</service>
</services>
</system.serviceModel>
另外,我generaly使用自定義數據合同將包含異常信息。
[DataContract]
public class MyFault
{
[DataMember]
public int Code { get; set; }
[DataMember]
public string Message { get; set; }
}
然後,我只是拋出一個泛化的錯誤是這樣的:
var myFault = new MyFault()
{
Code = ErrorCode.UnhandledException
Message = ex.Message,
};
...
throw new FaultException<MyFault>(myFault);
您是否嘗試過使用[FaultException異常的通用版本(http://msdn.microsoft.com/ EN-US /庫/ ms576199(v = vs.110)的.aspx)?請參閱[拋出通用FaultException](http://stackoverflow.com/questions/648084/throwing-generic-faultexception) –
@RuiJarimba - 是的,我明白了。在我的情況下,硬編碼的消息將被報告給客戶端。我如何定義這樣的例外? – Yakov
請參閱Cybermaxs的回答 –