这是我的web.config,在IIS7上的应用程序中运行WCF服务,但没有任何内容写入指定的文件.已经为每个人授予了该文件的权限.
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing, error, warning, critical" propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\log\tracestext.log" />
</listeners>
</source>
</sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)
我可以添加服务引用就好了.
然后我尝试从Windows应用程序调用该服务,几分钟后,在运行Windows应用程序的计算机上出现错误"客户端无法在配置的超时(00:00:00)内完成安全协商.目前的谈判支持是1(00:00:00)."
但绝对没有任何内容写入config中指定的跟踪日志文件.
我还需要做些什么来启用跟踪吗?谢谢你的帮助
编辑:"来源"部分现在匹配此处推荐的部分:http://msdn.microsoft.com/en-us/library/aa702726.aspx
我已将"diagnostics.messagelogging"部分添加到"system.servicemodel"
并且事件查看器显示:"消息记录已打开.敏感信息可能以明文形式记录,即使它已在线路上加密:例如,消息正文.进程名称:w3wp进程ID:1784"
但是日志文件仍然是空的
mar*_*c_s 16
是的 - 您刚刚定义了一些.NET跟踪源和侦听器 - 但您还没有指示WCF实际进行跟踪!
你还需要:
<system.serviceModel>
<diagnostics>
<messageLogging
logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="false"
logMalformedMessages="true" logEntireMessage="true"
maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" />
</diagnostics>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
这两个配置组合应该做到了!
为了立即将您的消息写回日志文件,您可能需要为您的<system.diagnostics>部分添加设置:
<system.diagnostics>
... everything you already have....
<trace autoflush="true" />
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)