.NET WCF 异常

Posted

技术标签:

【中文标题】.NET WCF 异常【英文标题】:.NET WCF Exception 【发布时间】:2012-03-19 02:50:14 【问题描述】:

我已经创建了 WCF + WF 服务。

我已添加绑定并尝试从我的测试应用程序中访问和执行我的 WF,但出现此类异常,这是什么意思以及如何解决?


由于内部错误,服务器无法处理请求。有关错误的更多信息,请在服务器上打开 IncludeExceptionDetailInFaults(来自 ServiceBehaviorAttribute 或来自配置行为)以便将异常信息发送回客户端,或根据 Microsoft .NET Framework 3.0 SDK 文档打开跟踪并检查服务器跟踪日志。


谢谢

【问题讨论】:

【参考方案1】:

这只是 WCF 针对服务器上的任何故障发回的一般错误。正如错误消息所解释的,如果您想查看实际错误,您需要在服务器配置中打开IncludeExceptionDetailInFaults。此设置如下所示:

    <behaviors>
        <serviceBehaviors>
            <behavior name="My.ServiceBehaviour">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                <dataContractSerializer maxItemsInObjectGraph="2147483647" />
                <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>

然后,WCF 将返回实际错误。

【讨论】:

我已经添加了代码,但由于某种原因它仍然返回相同的错误。 @WildGoat 你能发布你的 配置部分吗?您是否在端点上设置服务行为?【参考方案2】:

要将异常发送到客户端,以便您可以在那里查看异常详细信息,请将 serviceDebug 部分添加到您的行为中,如下所示:

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>

您可以像这样打开跟踪:

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Error,ActivityTracing" propagateActivity="true">
      <listeners>
        <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="LFFServicesHost.svclog" />
      </listeners>
    </source>
  </sources>
</system.diagnostics>

然后打开 LFFServicesHost.svclog 文件。这将显示有关失败的详细信息。

【讨论】:

我已经添加了代码,但由于某种原因它仍然返回相同的错误。 是的,您仍然会收到错误 - 但包含异常信息后,您可以在调试模式下加载客户端并找到异常详细信息。

以上是关于.NET WCF 异常的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 中的 WCF 模拟异常

WCF over net.tcp 与安全模式 none 给出异常

尝试在 ASP.NET 网站中托管时出现 WCF 服务异常错误

将单个枚举值传递给 WCF 服务时,protobuf-net 引发有关无效线路类型的异常

WCF 异常记录

WCF 异常处理策略