如果在開發過程中,WCF服務出現問題,我們可以通過服務引用,然後直接斷點調試進去。然而,對于已經釋出的服務,出現錯誤時,尋找錯誤資訊會變得麻煩。
幸好,微軟提供了服務跟蹤檢視器工具 (SvcTraceViewer.exe)這個工具來跟蹤已釋出的服務。
可以在檔案夾: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin找到(我的系統是WIN7,.NET 4.0)

配置服務跟蹤相當簡單,可以用上面的SvcConfigEditor.exe來打開服務的config檔案配置。
也可以手動修改配置,增加一個diagnostics的配置節點。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<!--添加跟蹤節點-->
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 為避免洩漏中繼資料資訊,請在部署前将以下值設定為 false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- 要接收故障異常詳細資訊以進行調試,請将以下值設定為 true。在部署前設定為 false 以避免洩漏異常資訊 -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="ServiceProxyBinding" closeTimeout="00:10:00" receiveTimeout="00:10:00"
sendTimeout="00:10:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2147483647" />
</binding>
<binding name="BasicHttpBinding_IAircraftService" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647" />
<binding name="BasicHttpBinding_ITransCenter" />
<binding name="BasicHttpBinding_IDecodeService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.85.70:5596/TransCenterSer.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITransCenter"
contract="TransCenterSer.ITransCenter" name="BasicHttpBinding_ITransCenter" />
<endpoint address="http://192.168.85.70:8010/AHMTService/DecodeService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDecodeService"
contract="DecodeService.IDecodeService" name="BasicHttpBinding_IDecodeService" />
</client>
</system.serviceModel>
<!--配置跟蹤節點-->
<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="D:\LogData\MoveQarData_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
<add initializeData="D:\LogData\MoveQarData_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
若要在調試過程中浏覽 Web 應用程式根目錄,請将下面的值設定為 True。
在部署之前将該值設定為 False 可避免洩露 Web 應用程式檔案夾資訊。
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
參考:http://msdn.microsoft.com/zh-cn/library/ms732023.aspx
http://www.cnblogs.com/cbcye/archive/2009/06/02/1494734.html
http://www.cnblogs.com/cnblogsfans/archive/2009/03/16/1413069.html
如果我的文章對你有幫助,就點一下推薦吧.(*^__^*)