如何在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跟踪时,默认情况下,在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文件中的logEntireMessage
和logKnownPii
标志也必须设置为true才能启用PII日志记录,如以下示例所示