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

本文关键字:用户 跟踪 WCF 调用 | 更新日期: 2023-09-27 18:24:01

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

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

然而,当我试图跟踪WCF调用时,我会在用户名应该在的地方得到一个"Removed!"文本。我知道这是为密码做的,但我真的需要看到它正在发送的用户名。

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

<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>

和系统内部。serviceModel

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

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

在查看WCF跟踪时,默认情况下,在Microsoft服务跟踪查看器应用程序中,用户名和密码字段显示为"。我通过关注这篇文章绕过了这个问题:

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

在您的机器中,.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日志记录,如以下示例所示