天天看點

WCF服務跟蹤

如果在開發過程中,WCF服務出現問題,我們可以通過服務引用,然後直接斷點調試進去。然而,對于已經釋出的服務,出現錯誤時,尋找錯誤資訊會變得麻煩。

幸好,微軟提供了服務跟蹤檢視器工具 (SvcTraceViewer.exe)這個工具來跟蹤已釋出的服務。

可以在檔案夾: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin找到(我的系統是WIN7,.NET 4.0)

WCF服務跟蹤

配置服務跟蹤相當簡單,可以用上面的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

如果我的文章對你有幫助,就點一下推薦吧.(*^__^*)

wcf

繼續閱讀