查看原始XML请求

时间:2009-12-15 09:24:01

标签: .net wcf soap web-services

我是WCF和SOAP消息的新手,但我已经设法组建了一个相当不错的客户端,我用它来从媒体组织下载新闻报道。我已经生成了代理类,显然抽象了很多,这意味着我基本上只是创建对象,调用方法和迭代结果。

我的问题是我有关于Web服务调用应该是什么样子的原始XML示例,我希望能够将这些调用与我正在进行的调用进行“比较”。基本上我需要确保我正在进行的调用与用于测试目的的示例XML文件相同。

我所要求的是有道理的,还是我以错误的方式解决这个问题?如果我遗漏了任何必要的信息,请告诉我,我可以查看段落,但不确定哪些信息是相关的。

5 个答案:

答案 0 :(得分:10)

您可以使用WCF跟踪来记录原始XML消息。以下是.config启用WCF跟踪原始消息日志记录:

<configuration>
  <system.serviceModel>
    <diagnostics>
      <messageLogging maxMessagesToLog="30000"
              logEntireMessage="true"
              logMessagesAtServiceLevel="true"
              logMalformedMessages="true"
              logMessagesAtTransportLevel="true">
      </messageLogging>
    </diagnostics>
  </system.serviceModel>
  <system.diagnostics>
    <sources>
      <source name="System.IdentityModel" switchValue="Verbose" logKnownPii="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <!-- Log all messages in the 'Messages' tab of SvcTraceViewer. -->
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <!-- ActivityTracing and propogateActivity are used to flesh out the 'Activities' tab in
           SvcTraceViewer to aid debugging. -->
      <source name="System.ServiceModel" switchValue="Error, ActivityTracing" propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <!-- This records Microsoft.IdentityModel generated traces, including exceptions thrown
           from the framework. -->
      <source name="Microsoft.IdentityModel" switchValue="Warning">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="trace.e2e" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>
</configuration>

您可以从MSDN: Configuring Tracing了解有关WCF跟踪的更多信息。

Microsoft提供Service Trace Viewer Tool来读取.svclog文件。

确保您的服务可以写入initializeData中定义的路径。

答案 1 :(得分:2)

您是否使用过Microsoft的服务跟踪查看器工具? This MSDN page将为您提供有关如何使用它的详细信息。

答案 2 :(得分:2)

对此的回答是使用fiddler作为代理 - 这样您就可以查看客户端与服务之间的传出传入消息。

还不能说出个人经验,但是为我开发的团队成员(在以前的生活中) - 非常正确地 - 编写了我们的服务包装器,内置支持明确使用代理 简化fiddler的使用。

答案 3 :(得分:0)

您可以使用IClientMessageInspector界面创建自己的消息检查器,并获取请求和响应的原始消息。

这是关于如何做到这一点的好帖子==&gt; http://www.keithelder.net/blog/archive/2008/01/15/How-to-Get-Around-WCFs-Lack-of-a-Preview-Web.aspx

答案 4 :(得分:0)

我对WCF了解不多,但您可以将连接重定向到网络上记录身体某处的其他Web服务器。这将允许您准确查看您要发送的内容,但需要一些基础架构工作。这可能是在您的开发计算机上运行的Web服务器。