首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >既然我们可以只使用FaultContract,为什么需要FaultException呢?

既然我们可以只使用FaultContract,为什么需要FaultException呢?
EN

Stack Overflow用户
提问于 2016-11-22 08:29:24
回答 1查看 457关注 0票数 2

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

ServiceData类

代码语言:javascript
复制
[DataContract]
public class ServiceData
{
    [DataMember]
    public bool Result { get; set; }
    [DataMember]
    public string ErrorMessage { get; set; }
    [DataMember]
    public string ErrorDetails { get; set; }
}

IService1.cs

代码语言:javascript
复制
[OperationContract]
ServiceData TestMethod();

Service1.svc.cs

代码语言:javascript
复制
 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就会有异常。那我们为什么要这么做?

EN

回答 1

Stack Overflow用户

发布于 2018-10-14 19:13:42

今天也有同样的问题。我只做过研究..。我什么都没测试过。请参见:

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

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

代码语言:javascript
复制
<behaviors>  
  <serviceBehaviors>  
    <behavior name="CalculatorServiceBehavior">  
      <serviceMetadata httpGetEnabled="True"/>  
      <serviceDebug includeExceptionDetailInFaults="True" />  
    </behavior>  
  </serviceBehaviors>  
</behaviors> 

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40737015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档