我已经在WCF服务中启用了跟踪。这是system.diagnostics部分:
<configuration>
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="System.ServiceModel" switchValue="All" propagateActivity="true">
<listeners>
<add name="xmlTraceListener" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="All">
<listeners>
<add name="xmlTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xmlTraceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:KryptonTracingTraces.svclog" />
</sharedListeners>
</system.diagnostics>
以下是仅显示诊断的system.serviceModel部分:
<diagnostics wmiProviderEnabled="true">
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="3000"
/>
</diagnostics>
当我发布服务时,我在服务器上的Windows事件查看器中看到一个Information事件,上面写着:
消息日志记录已打开。敏感信息可能是登录clear,即使它是在网络上加密的:for例如消息体。
当我转到服务器上的C:\KryptonTracing文件夹时,没有生成Traces.svclog。我已经进入IIS,查看了这个WCF服务运行的应用程序池标识,并赋予该标识对文件夹的完全控制权。。还是什么都没有。无论我做什么,我都无法获得任何东西来创建Traces.svclog。仅供参考,此服务是具有自定义身份验证的wsHttpBinding(SSL),但这应该无关紧要。
我尝试了这篇文章中的所有内容,但都无济于事。请帮忙。
我最终使用WCF配置编辑器将跟踪添加到web.config中。它在我的web.config中生成了这两个部分。
<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 propagateActivity="true" name="System.ServiceModel" switchValue="Warning,ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelTraceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:TracingKrypton_Web_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener"
traceOutputOptions="Timestamp">
<filter type="" />
</add>
<add initializeData="C:TracingKrypton_Web_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener"
traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
这个:
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
然后,在发布之前,我创建了C:\Tracing文件夹,并添加了具有完全权限的"Everyone"。最后我发布了,现在两个.svclog文件都在文件夹中!!!!不确定为什么我最初的配置一开始就不起作用。
遇到同样的问题时,我注意到app.config
gui编辑器正在用西班牙语(我使用的VS语言环境)编写switchValue="Advertencia,ActivityTracing"
。
我把它改成switchValue="Warning,ActivityTracing"
,它起作用了。日志文件现在已创建
在线搜索"TraceLevel Enumeration"以查看可用选项。