首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF : FaultContract(typeof(ExceptionDetail))问题

WCF : FaultContract(typeof(ExceptionDetail))问题
EN

Stack Overflow用户
提问于 2010-03-18 22:35:36
回答 4查看 6.1K关注 0票数 5

我已经为我的操作契约设置了属性[FaultContract(typeof(ExceptionDetail))]。当我尝试将服务添加到客户端应用程序时,我收到此错误- "Custom tool error: Failed to generate code for the service reference 'ServiceReference1'. Please check other error and warning messages for details."

但是当我注释掉wcf属性时,我可以将FaultContract服务引用添加到我的客户端应用程序中。

EN

回答 4

Stack Overflow用户

发布于 2010-03-19 06:18:57

使用FaultContracts的意义在于,首先可以从服务传回SOAP错误,而不会中断服务器和客户端之间的通信通道(优雅且可互操作地处理.NET异常等错误条件),其次,使用FaultContracts,服务器可以抛出类型化错误(FaultException<T>),客户端可以捕获这些错误。

如果您希望或需要实现真正的互操作,则需要:

  • 将所有FaultContract类型定义为使用DataContract修饰服务器上的所有.NET异常的类(例如使用IErrorHandler接口),并将它们转换为可互操作的SOAP错误

如果你控制了线路的两端,两端都是.NET,那么你可以通过一个步骤来简化这一步:在服务器上,处理所有的.NET异常,并将它们转换成例如FaultException<ArgumentOutOfRangeException>,也就是说,创建一个“.NET exception的错误”,然后在客户端,捕获那些键入的FaultException并处理它们:

代码语言:javascript
复制
[FaultContract(typeof(ArgumentOutOfRangeException)]
[OperationContract]
public void CallService(.......)

然后在您的实现中,使用以下代码:

代码语言:javascript
复制
try
{
    clientProxy.CallService();
}
catch(FaultException<ArgumentOutOfRangeException> ex)
{
   // handle the most specific exception first
}
catch(FaultException ex)
{
   // handle all other, unspecific server faults
}
catch(CommunicationException ex)
{
   // handle all other, client-proxy related WCF errors
}
catch(Exception ex)
{
   // handle anything else....
}
票数 9
EN

Stack Overflow用户

发布于 2010-03-19 01:27:59

删除该FaultContract,改为配置includeExceptionDetailInFaults

代码语言:javascript
复制
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="Behavior">
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
票数 2
EN

Stack Overflow用户

发布于 2010-03-19 01:24:33

使用http://msdn.microsoft.com/en-us/library/ms732023.aspx中的服务跟踪查看器工具查看活动跟踪。

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

https://stackoverflow.com/questions/2470607

复制
相关文章

相似问题

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