这是我的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>
我可以很好地添加服务参考 然后我尝试从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 “
但日志文件仍为空
答案 0 :(得分:15)
是的 - 您刚刚定义了一些.NET跟踪源和侦听器 - 但您还没有指示WCF实际进行跟踪!
您还需要:
<system.serviceModel>
<diagnostics>
<messageLogging
logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="false"
logMalformedMessages="true" logEntireMessage="true"
maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" />
</diagnostics>
</system.serviceModel>
这两个配置组合应该做到了!
为了立即将您的消息写回日志文件,您可能需要在<system.diagnostics>
部分添加设置:
<system.diagnostics>
... everything you already have....
<trace autoflush="true" />
</system.diagnostics>
答案 1 :(得分:4)
要写入日志文件,请确保运行Web应用程序的标识具有对日志目录的写入权限。
您可以在IIS 7管理控制台中找到该标识。选择Web应用程序正在使用的应用程序池。单击“高级设置”...在属性窗口中,查找标识字段。它可能会说网络服务。这是需要对日志输出文件夹具有写入权限的帐户。
如果您已在此目录中有一个日志文件,请尝试删除它并让框架创建它。
希望这有帮助。
答案 2 :(得分:0)
确保您已配置system.diagnostics和 已配置System.serviceModel / diagnostics部分。
确保在正确 App.config / Web.config文件中配置了它们。需要注意的是多重 配置文件可能存在于项目中,使用的配置文件取决于 构建配置。
我个人有同样的症状,直到我注意到我把这些部分放在 app.config (在我的情况下,客户端跟踪),而不是 app.DebugLocal.config < / strong>即可。后者用作我的构建配置设置为 DebugLocal 。
答案 3 :(得分:0)
问题可能是由于允许在配置文件中指定的日志目录中写入。 如果您不确定该用户是否在上下文中,请向所有计算机用户授予写入权限。
它对我来说很好。