1

调用本地 WCF 服务时,我收到“无法识别的消息版本”错误。此服务位于 F5 负载平衡器后面的 DMZ 中。F5 管理 SSL 证书,然后通过 HTTP(不是 HTTPS)将消息转发到服务器。部署在不通过 F5 路由的内部服务器上的相同服务工作正常。

我想一路检查消息的版本。服务器堆栈跟踪看起来好像 IIS 在 WCF 框架的内部传递给 .NET 代码,然后在将消息转发给我的代码之前爆炸了。

我一直在玩弄客户端的 Fiddler 和服务器上的 IIS 日志记录,但似乎找不到可以引导我到任何地方的消息详细信息。我还配置了服务跟踪日志(如下配置),但没有看到任何结果。任何其他工具建议、错误原因或我可能不理解工具向我展示的内容?

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "c:\Temp\Traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

更新 - 核心问题已解决 我发现我遇到的具体问题是基于 F5 负载均衡器重定向回自身以及按预期重定向到服务器上。我认为了解更多有关如何跟踪请求状态的信息可能仍然有用。

4

1 回答 1

1

这里有几件事要检查:

  1. wcf 进程是否具有对 c:\temp 目录的写入权限?(ProcessMonitor 对于验证这类事情非常有用:http ://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

  2. 听起来这可能是一个序列化问题,也许尝试在 System.Runtime.Serialization 上添加一个侦听器,如下所述:http: //msdn.microsoft.com/en-us/library/ms733025.aspx

于 2012-12-05T18:42:36.000 回答