我需要抛出 wcf 异常而不向客户端显示堆栈跟踪,只需消息...
抛出新的错误异常("ex1");
我平均有 20 个异常字符串。我如何实现它而不每次都抛出带有字符串参数的 FaultException,而是异常对象
FaultException_i i = 1...20
使用
WCF 服务时,必须使用 FaulException,因为它是处理错误的本机 Soap 方法。但是,并非所有异常都能正确实现 wcf 序列化。
异常详细信息(包括堆栈跟踪)永远不应向客户端公开。您可以在配置中轻松关闭此功能:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyService"
behaviorConfiguration="MyServiceBehavior" >
....
</service>
</services>
</system.serviceModel>
此外,我通常使用包含异常信息的自定义数据协定。
[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);