为什么WCF服务无法在没有故障异常的情况下向客户端发送确切的异常?

时间:2016-06-02 13:37:19

标签: c# wcf

请告诉我为什么在不使用faultexception或错误合同的情况下,我们无法在wcf服务中获得确切的异常。

我搜索了很多网站,但没有得到正确答案。

我的采访中已经提出了这个问题。

由于

2 个答案:

答案 0 :(得分:2)

我们使用WCF的主要原因之一是互操作性。可互操作的应用程序是可以与任何其他平台(比如Java)上构建的任何应用程序通信的应用程序。

.Net例外特定于.Net。它们只能由也是.Net的客户理解。其他平台永远无法理解.Net异常。如果您希望WCF服务可以互操作,那么服务应该抛出错误异常。

例如,Java平台中没有像 ChannelTerminatedException 这样的异常。如果将此异常抛给基于Java构建的客户端,则该客户端将永远不会理解此异常。

故障异常允许您创建强类型SOAP故障。通过Faults生成的SOAP消息并不特定于.Net,因此可以被任何平台理解。

故障消息是在基于SOAP的SOA实现中共享任何错误信息的标准。有关标准和SOAP错误消息结构的更多信息,请参阅:w3.org specificationsSOAP Fault Message Structure

答案 1 :(得分:1)

app.config文件中,您可以使用以下内容激活serviceDebug

<serviceBehaviors>
        <behavior name="">
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
 </serviceBehaviors>