2009-12-15 131 views
5

我很新的WCF和SOAP消息,但我设法拼凑里面我是用下载来自媒体机构的新闻报道一个相当不错的客户端。我已经生成了代理类,它显然抽象了很多,意味着我基本上只是创建对象,调用方法和遍历结果。查看原始XML请求

我的问题是,我有到Web服务调用应该是什么样子原始XML例子,我希望能够以“比较”这些给我提出的呼吁。基本上我需要确保我所做的调用与用于测试目的的示例XML文件相同。

难道我问什么有意义或我要对这个错误的方式?请让我知道,如果有任何必要的信息,我已经遗漏了,我可以轰炸段落,但不知道什么信息是相关的。

回答

2

您是否使用了Microsoft的Service Trace Viewer工具? This MSDN page会为您提供如何使用它的详细信息。

+0

感谢您的回应,slugster。我会看看这个,并会回复我的走向。 – dave 2009-12-15 10:04:22

2

股票的答案是使用fiddler作为代理 - 这将允许您查看传出的在您的客户端和服务之间传入的消息。

还不能从个人的经验说话,但是队员们对我开发(前生)有 - 非常正确 - 编写了我们的服务与包装内置支持使用代理明确来简化使用的提琴手。

+0

感谢您的回复。使用Fiddler的问题是它是一个SSL安全的Web服务,因此存在Web服务不喜欢Fiddler的证书的问题,因为它是一个无法识别的CA.我已经尝试覆盖服务器证书验证,但是Web服务发生了一些事情,它根本就不喜欢这种情况。答案可能是继续玩这个 – dave 2009-12-15 10:07:07

+0

你有没有试过Live HTTP头文件,一个Firefox插件?我不确定它是否支持CA,但值得一试。 – 2009-12-22 00:13:18

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> 

你可以阅读更多有关WCF从MSDN: Configuring Tracing跟踪。

微软提供了一个Service Trace Viewer Tool阅读.svclog文件。

确保在initializeData定义的路径是可写的为您服务。

0

我不知道很多关于WCF好的帖子,但你可以重定向到网络上的某个地方记录的身体上不同的Web服务器的连接。这可以让你看到你正在发送的内容,但需要一些基础设施的工作。这可能是您的开发机器上运行的Web服务器。