WCF - 查看对安全Web服务的xml请求/响应

时间:2010-03-11 17:13:37

标签: c# .net xml wcf

我有一个WCF服务应用程序,在这个应用程序中,我通过安全连接调用第三方Web服务。

我一直在尝试使用fiddler来查看请求响应流,但是在尝试了半天以上的应用程序后,我已经放弃了它。虽然我向受信任区域提供了更多的小提琴证书,但它有证书问题。

如果只是看到我对第三方网络服务的xml请求和响应,我最好的选择是什么?

我正在使用生成的代理类,因此我目前无法访问我发送和接收的原始xml。我很好奇,如果我过度复杂化可以做得更简单的事情。这是我的开发机器,我可以访问几乎所有内容,没有任何限制。

这是一个简单的方法吗?

编辑:

此时我甚至不需要使用追踪。我只需要查看请求/响应的序列化输出。即使我可以从Visual Studio调试器或其他这样做这将有所帮助。

3 个答案:

答案 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 TraceWCF 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。然后,您可以查看它们。