在IIS 7.5中联系WCF服务时,由对等方(502)重置连接

nw.*_*nw. 7 asp.net iis wcf

我们有一个WCF服务,几个月来一直运行良好.就在今天早上,对该服务的调用开始失败,代理服务器报告"由对等方重置连接"(502).奇怪的是,删除的连接没有IIS日志条目,尽管我们能够使用WireShark检测它们.所以似乎线程正在死亡,没有任何痕迹.

有问题的Web方法是检索100个数据库记录.我们发现通过将结果限制为20条记录,它可以按预期工作.我怀疑有超时发挥作用,但没有例外或追溯,很难知道.

有没有人经历过这个?有关如何排除故障的任何建议吗?

Pet*_*tin 19

您可以在服务上启用WCF诊断以获取有关异常的更多详细信息.

为了让您快速上手 - 在您的网络(或应用)配置中:

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>
Run Code Online (Sandbox Code Playgroud)

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

<diagnostics wmiProviderEnabled="false">
      <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
    </diagnostics>
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 对于它的价值,这是解决我的问题的唯一方法.所有其他建议(在十几个帖子中)推动我指示"如果这是......那么......"的具体建议.这个级别的调试让我得到答案.对我来说,它是一个返回DataTable的WCF方法,而XmlSerializer需要设置一个TableName.没有外部异常抛出!但我在追踪过程中得到了它. (2认同)