Asp.net 当联系IIS 7.5中的WCF服务时,对等方(502)重置连接

Asp.net 当联系IIS 7.5中的WCF服务时,对等方(502)重置连接,asp.net,wcf,iis,Asp.net,Wcf,Iis,我们有一个WCF服务,几个月来一直运作良好。就在今天早上,对该服务的调用开始失败,代理服务器报告“由对等方重置连接”(502)。奇怪的是,虽然我们可以通过WireShark检测到断开的连接,但没有IIS日志条目。因此,这根线似乎正在消亡,没有留下任何痕迹 有问题的web方法是检索100条数据库记录。我们发现,通过将结果限制为20条记录,它可以按预期工作。我怀疑有一个暂停开始发挥作用,但没有例外或回溯,这是很难知道 有人经历过吗?关于如何排除故障有什么建议吗?至于排除故障,a有时可以帮助您解决这些

我们有一个WCF服务,几个月来一直运作良好。就在今天早上,对该服务的调用开始失败,代理服务器报告“由对等方重置连接”(502)。奇怪的是,虽然我们可以通过WireShark检测到断开的连接,但没有IIS日志条目。因此,这根线似乎正在消亡,没有留下任何痕迹

有问题的web方法是检索100条数据库记录。我们发现,通过将结果限制为20条记录,它可以按预期工作。我怀疑有一个暂停开始发挥作用,但没有例外或回溯,这是很难知道


有人经历过吗?关于如何排除故障有什么建议吗?

至于排除故障,a有时可以帮助您解决这些问题。

您可以在您的服务上打开WCF diagnostics以获取有关异常的更多详细信息

要快速启动,请在web(或应用程序)配置中:

1) 在配置元素下的任意位置添加System.Diagnostics部分。您可以将路径替换为希望文件存储在的任何路径

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
          <add name="ServiceModelMessageLoggingListener">
            <filter type="" />
          </add>
        </listeners>
      </source>
      <source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
          <add name="ServiceModelTraceListener">
            <filter type="" />
          </add>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\temp\services_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
        <filter type="" />
      </add>
      <add initializeData="C:\temp\services_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
        <filter type="" />
      </add>
    </sharedListeners>
  </system.diagnostics>

2) 在system.ServiceModel下添加以下内容:

<diagnostics wmiProviderEnabled="false">
      <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
    </diagnostics>

3) 在C:\Program Files(x86)\Microsoft SDK\Windows\v7.0A\Bin\start SvcTraceViewer.exe下。加载消息跟踪(services\u messages.svclog)和服务跟踪日志(services\u tracelog.svclog)。可以在工具中拖放文件,也可以打开一个文件,然后添加另一个文件

4) 查找问题的红色粗体字母


如果您想让您编辑WCF配置的体验更受欢迎,可以使用SvcConfigEditor.exe,它与SvcTraceViewer.exe(#3)位于同一文件夹下。只需打开配置文件,您就会看到Diagnostics文件夹,该文件夹将允许您启动/停止并配置诊断。

谢谢!最后,我在跟踪日志中找到了一个异常,从而找到了解决方案。@nw。出了什么问题?你能分享吗?步骤2)是可选的,需要声明messageLogging配置部分。值得一提的是,这是解决我的问题的唯一方法。所有其他的建议(在十几篇帖子上)都把我推向了“如果是这样的话……”具体建议的方向。这种程度的调试让我找到了答案。对我来说,这是一个返回DataTable的WCF方法,XmlSerializer需要设置一个TableName。没有引发外部异常!但我是在追踪过程中得到的。很棒的工具,很高兴我看到了这篇文章