如何在WCF调用跟踪上查看用户名

时间:2015-11-23 16:03:41

标签: c# web-services wcf soap tracing

我有以下问题。我正在使用WCF连接到Java SOAP服务。在java日志中,似乎存在发送最后一个用户凭证而不是当前用户凭证的问题,尽管仅用于用户进行的第一次呼叫。

问题是我不控制Java端,我不知道问题是否与它们有关,因为我在代码中找不到我认为可能发生这种情况的地方。我想确认我们发送的用户名与他们在日志中的用户名相同。这也很难测试,因为它只发生在我们的测试环境中,同时有多个用户,我无法在本地重现它。

但是,当我尝试跟踪WCF调用时,我得到一个“已删除!”用户名应该是的文本。我知道这是为密码完成的,但我真的需要看到它被发送的用户名。

在跟踪选项的某个地方有没有办法删除它?目前我正在使用它:

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel.MessageLogging">
            <listeners>
                <add name="messages"
                    type="System.Diagnostics.TextWriterTraceListener"
                    initializeData="c:\logs\messages5.svclog" />
            </listeners>
        </source>
    </sources>
</system.diagnostics>

并在system.serviceModel内部

<diagnostics>
    <messageLogging logEntireMessage="true" 
                    logMalformedMessages="true" 
                    logMessagesAtServiceLevel="true" 
                    logMessagesAtTransportLevel="true" 
                    maxMessagesToLog="300000" />
</diagnostics>

1 个答案:

答案 0 :(得分:1)

By default inside the Microsoft Service Trace Viewer application when viewing a WCF Trace, the username and Password field(s) are shown as "". I got around this issue by following this article:

https://msdn.microsoft.com/en-us/library/ms730318.aspx

在树节点上以编程方式触发点击事件

在你的machine.config依赖于(.NET版本,例如2.0,3.0等,以及比特,例如x86,x64)你必须启用

<configuration>
<system.serviceModel>
      <machineSettings enableLoggingKnownPii="true"/>
</system.serviceModel>
</configuration>

然后在应用程序启用的web.config中启用

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging"
        logKnownPii="true">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\logs\messages.svclog" />
          </listeners>
      </source>
    </sources>
</system.diagnostics>

对.net 4.5的额外要求

在.NET Framework 4.5中,还必须在Web.config文件或App.config文件中将logEntireMessagelogKnownPii标志设置为true以启用PII日志记录,如以下示例所示