2012-06-05 74 views
6

我們有一個幾個月來一直工作正常的WCF服務。就在今天早上,對該服務的呼叫開始失敗,代理服務器報告「通過對等方重置連接」(502)。奇怪的是,雖然我們能夠使用WireShark檢測它們,但是沒有用於丟棄連接的IIS日誌條目。所以看起來好像線程正在死亡,沒有留下任何痕跡。當在IIS 7.5中聯繫WCF服務時由對等端(502)重置連接

有問題的Web方法正在檢索100個數據庫記錄。我們發現通過將結果限制爲20條記錄,它按預期工作。我懷疑有一個暫停發揮作用,但沒有例外或回溯,這很難知道。

有沒有人遇到過這個?有關如何排除故障的任何建議?

回答

16

您可以打開服務上的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> 

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

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

3)在C:\ Program Files文件(x86)的\微軟的SDK \的Windows \ v7.0A \ BIN \啓動SvcTraceViewer.exe 。加載消息跟蹤(services_messages.svclog)和服務跟蹤日誌(services_tracelog.svclog)。您可以拖放工具中的拖放文件或打開一個然後添加另一個

4)查找問題的紅色粗體字母。

如果您想讓您的體驗編輯WCF配置更可口,您可以使用SvcConfigEditor.exe,它位於與SvcTraceViewer.exe(#3)相同的文件夾下。只需打開配置文件,你應該看到診斷文件夾,這將允許你啓動/停止和配置診斷。

+1

謝謝!最後,我能夠在跟蹤日誌中找到異常,從而產生了解決方案。 –

+0

@nw。問題是什麼?你可以分享嗎? – Siddhesh

+0

步驟2)是可選的,並且需要聲明messageLogging配置部分。 –

1

至於故障排除,WCF trace有時可以幫助解決這些問題。