7

何ヶ月も正常に機能しているWCFサービスがあります。ちょうど今朝、このサービスへの呼び出しが失敗し始め、プロキシサーバーが「ピアによる接続のリセット」(502)を報告しました。奇妙なことに、WireSharkでそれらを検出することはできますが、ドロップされた接続のIISログエントリはありません。そのため、スレッドが死んでいるように見え、痕跡は残りません。

問題のあるWebメソッドは、100個のデータベースレコードを取得することでした。結果を20レコードに制限することにより、期待どおりに機能することがわかりました。タイムアウトが発生しているのではないかと思いますが、例外やトレースバックがなければ、それを知るのは非常に困難です。

誰かがこれを経験しましたか?トラブルシューティングの方法に関する提案はありますか?

4

2 に答える 2

19

サービスでWCF診断をオンにして、例外に関する詳細を取得できます。

すばやく作業を開始するには-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 SDKs \ Windows \ v7.0A \ Bin \で、SvcTraceViewer.exeを起動します。メッセージトレース(services_messages.svclog)とサービストレースログ(services_tracelog.svclog)の両方をロードします。ツールにドロップファイルをドラッグするか、ファイルを開いてから別のファイルを追加することができます

4)問題のある赤い太字を探します。

WCF構成の編集をより快適にしたい場合は、SvcTraceViewer.exe(#3)と同じフォルダーにあるSvcConfigEditor.exeを使用できます。構成ファイルを開くだけで、診断を開始/停止および構成できるDiagnosticsフォルダーが表示されます。

于 2012-06-05T22:22:46.337 に答える
2

As for troubleshooting, a WCF trace can sometimes help figuring these issues out.

于 2012-06-05T22:17:30.217 に答える