Asp.net

在 IIS 7.5 中聯繫 WCF 服務時由對等方 (502) 重置連接

  • June 5, 2012

我們有一個 WCF 服務幾個月來一直執行良好。就在今天早上,對該服務的呼叫開始失敗,代理伺服器報告“對等方重置連接”(502)。奇怪的是,沒有 IIS 日誌條目記錄已斷開的連接,儘管我們能夠使用 WireShark 檢測到它們。因此,似乎執行緒正在死去,沒有留下任何痕跡。

有問題的網路方法是檢索 100 條數據庫記錄。我們發現,通過將結果限制為 20 條記錄,它可以按預期工作。我懷疑有一個超時起作用,但無一例外或回溯都很難知道。

有沒有人經歷過這個?關於如何解決它的任何建議?

您可以在您的服務上打開 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>
  1. 在 system.ServiceModel 下添加以下內容:
<diagnostics wmiProviderEnabled="false">
     <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
   </diagnostics>
  1. 在 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ 下啟動 SvcTraceViewer.exe。載入消息跟踪 (services_messages.svclog) 和服務跟踪日誌 (services_tracelog.svclog)。您可以在工具中拖放文件或打開一個然後添加另一個

  2. 尋找問題的紅色粗體字母。

如果您想讓編輯 WCF 配置的體驗更令人滿意,您可以使用與 SvcTraceViewer.exe (#3) 位於同一文件夾下的 SvcConfigEditor.exe。只需打開配置文件,您應該會看到 Diagnostics 文件夾,它允許您啟動/停止和配置診斷。

引用自:https://stackoverflow.com/questions/10905067