gpt4 book ai didi

c# - 为什么需要 FaultContract,而我们只能使用 FaultException?

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:01 24 4
gpt4 key购买 nike

我只是在检查 WCF FaultContract。根据它的定义,它用于向客户端发送异常详细信息。但是我们可以只使用 FaultException 来做到这一点。那么为什么我们需要 FaultContract。下面是我的代码

服务数据类

[DataContract]
public class ServiceData
{
[DataMember]
public bool Result { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
[DataMember]
public string ErrorDetails { get; set; }
}

IService1.cs

[OperationContract]
ServiceData TestMethod();

Service1.svc.cs

 public ServiceData TestMethod()
{
ServiceData myServiceData = new ServiceData();

myServiceData.Result = true;
myServiceData.ErrorMessage = "Custom Error message.";
myServiceData.ErrorDetails = "Error details of the exception";

throw new FaultException<ServiceData>(myServiceData);
}

我在未使用 FaultContact 的情况下在客户端收到异常。那我们为什么需要它?

最佳答案

今天遇到了同样的问题。我只做过研究......我没有测试任何东西。见:

https://learn.microsoft.com/en-us/dotnet/framework/wcf/samples/fault-contract

似乎您可以将服务器配置为将所有故障异常发送给客户端或仅将已声明的异常发送给客户端。

<behaviors>  
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>

因此,我认为您的服务器已配置为发送所有异常。为了更安全,您可以将其更改为仅发送已声明的异常。然后,您将需要使用 FaultContract 属性。

Microsoft 说“这种行为 [允许所有异常] 应该只用于调试目的,永远不应该在生产中启用。”

关于c# - 为什么需要 FaultContract,而我们只能使用 FaultException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40737015/

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