我只是在检查WCF的FaultContract。根据它的定义,它用于向客户端发送异常详细信息。但我们可以使用FaultException来实现这一点。所以我们为什么需要FaultContract。下面是我的代码
ServiceData类
[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就会有异常。那我们为什么要这么做?
发布于 2018-10-14 19:13:42
今天也有同样的问题。我只做过研究..。我什么都没测试过。请参见:
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说:“这种允许所有异常的行为只应用于调试目的,不应在生产中启用。”
https://stackoverflow.com/questions/40737015
复制相似问题