我有一个WCF服务应用程序,在这个应用程序中,我通过安全连接调用第三方Web服务。
我一直在尝试使用fiddler来查看请求响应流,但是在尝试了半天以上的应用程序后,我已经放弃了它。虽然我向受信任区域提供了更多的小提琴证书,但它有证书问题。
如果只是看到我对第三方网络服务的xml请求和响应,我最好的选择是什么?
我正在使用生成的代理类,因此我目前无法访问我发送和接收的原始xml。我很好奇,如果我过度复杂化可以做得更简单的事情。这是我的开发机器,我可以访问几乎所有内容,没有任何限制。
这是一个简单的方法吗?
编辑:
此时我甚至不需要使用追踪。我只需要查看请求/响应的序列化输出。即使我可以从Visual Studio调试器或其他这样做这将有所帮助。
答案 0 :(得分:7)
使用WCF Tracing - 效果非常好,并附带一个方便的trace viewer utility。
您可以设置大量选项 - 但在其核心,您必须向WCF服务和客户端配置添加类似的内容:
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
开箱即用的各种“跟踪侦听器” - 一个写入Visual Studio中的输出控制台,这一个是创建XML文件,或者您可以将内容存储在SQL Server数据库表中 - 以及整个机制是可扩展的,您也可以编写自己的跟踪侦听器!
另请参阅此处:Using of WCF Trace和WCF Tracing FAQ以获取更多信息。
答案 1 :(得分:4)
由于我试图从引用到我的WCF应用程序的asmx Web服务读取soap消息,因此解决我的问题的方法是创建一个继承自System.Web.Services.Protocols.SoapExtension的类,在web.config中注册此类,以便通过此类路由所有流量并进行查看。
这些通信都不会显示在WCF跟踪上,因此这还不够。然而,我学习它是有用的,所以现在我能够看到我的wcf服务应用程序和Web应用程序之间发生的所有事情。
这篇文章为我how-to-capture-soap-envelopes-when-consuming-a-web-service
钉了它答案 2 :(得分:2)
将此添加到您的app.config:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="messages.svclog" />
</listeners>
</source>
</sources>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="-1"/>
</diagnostics>
它会将所有消息记录到messages.svclog。然后,您可以查看它们。