WCF提供了两个工具可以跟踪WCF的调用过程:
SvcConfigEditor:微软提供的用来辅助编辑WCF配置文件的工具
SvcTraceViewer:微软提供的用来查看WCF的Trace Log的工具。
跟踪配置
启动SvcConfigEditor.exe, 用这个程序打开wcf service host程序的web.config 或者app.config,除了WMI Provider,其它的全部Enable, 在log file选择svclog文件的保存路径, 然后save
也可以手动配置添加如下内容,不使用上面的配置工具
首先在<configuration>节点里添加如下内容
<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="E:\Web_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="E:\Web_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.ServiceMode>节点添加如下配置
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
重新请求WCF服务,就可以在刚才指定的E盘中看到两个svclog文件。
查看
启动SvcTraceViewer, 打开刚才的svclog文件,调用wcf service,然后就可以看到消息的记录。
如果WCF运行有错误,无论是服务器级别的错误,还是代码级别的错误,都能被捕捉到,并以红色字样显示,十分便于定位问题。
参考:
1.WCF跟踪调试,http://www.cnblogs.com/cnblogsfans/archive/2009/03/16/1413069.html
2.Troubleshooting errors in WCF Service,http://perfp.wordpress.com/2010/08/06/troubleshooting-errors-in-wcf-service/