wcf尝试设置跟踪调试,而不是写入日志文件

时间:2010-05-17 16:02:02

标签: wcf tracing

这是我的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 “

但日志文件仍为空

4 个答案:

答案 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)

  1. 确保您已配置system.diagnostics和 已配置System.serviceModel / diagnostics部分。

  2. 确保在正确 App.config / Web.config文件中配置了它们。需要注意的是多重 配置文件可能存在于项目中,使用的配置文件取决于 构建配置。

  3. 我个人有同样的症状,直到我注意到我把这些部分放在 app.config (在我的情况下,客户端跟踪),而不是 app.DebugLocal.config < / strong>即可。后者用作我的构建配置设置为 DebugLocal

答案 3 :(得分:0)

问题可能是由于允许在配置文件中指定的日志目录中写入。 如果您不确定该用户是否在上下文中,请向所有计算机用户授予写入权限。

  • 右键单击日志目录
  • 点击“安全”标签
  • 点击修改
  • 在“群组名称或用户”部分,选择“用户计算机名\用户”
  • 在“权限”部分授予写入权限

它对我来说很好。