gpt4 book ai didi

c# - 不显示堆栈跟踪的 wcf 异常

转载 作者:行者123 更新时间:2023-12-02 01:07:27 25 4
gpt4 key购买 nike

我需要从 wcf 异常中抛出而不向客户端显示堆栈跟踪,只是消息...

throw new FaultException("ex1");

我平均有 20 个异常字符串。我如何实现它而不每次都抛出带有字符串参数的 FaultException,而是一个异常对象

FaultException_i i = 1...20

最佳答案

使用 WCF 服务时,您必须使用 FaulException,因为它是处理错误的 native 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>

此外,我通常使用包含您的异常信息的自定义数据契约(Contract)。

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

关于c# - 不显示堆栈跟踪的 wcf 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com