我有以下问题。我正在使用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>
答案 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文件中将logEntireMessage
和logKnownPii
标志设置为true以启用PII日志记录,如以下示例所示