Gus*_*Gus 2 debugging wcf soap webservice-client
我正在构建一个Web服务客户端,以便与一个(基于java的)远程Web服务进行交互,这是我无法控制的.我可以调用Web服务操作,并通过数据包嗅探告诉服务正在响应填充的数据.但是,当响应进入客户端代码时,响应只是一个shell,所有数据都为null.
我怀疑在Web服务"管道"中发生了一个错误,导致数据被静默删除或忽略,但我找不到一种方法来启用调试(甚至日志或错误消息?)在它命中我的客户端代码之前的响应.
我的App.config启用了消息日志记录,但只记录了外发消息:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\messages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="3000"
maxSizeOfMessageToLog="2000"/>
</diagnostics>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
我真的想在实际解析响应消息期间设置断点,但让Message Logger实际记录响应也可能有所帮助.
我还配置了一个自定义MessageEncoder,它是解决远程服务解析器中的错误所必需的.我可以在这个ReadMessage方法上添加断点MessageEncoder,并且可以看到数据在那时仍然存在.但是,下一步跳回到客户端代码,并且Response对象为空 - 没有警告或消息.有什么方法可以看到两者之间发生了什么?
所以,我想这最终是一个由两部分组成的问题:
MessageEncoder,但在它被发送到客户端代码之前?以下是如何让响应跟踪为您工作:
1.配置
<system.diagnostics>
<sharedListeners>
<add name="sharedListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\LogFiles\messages.svclog" />
</sharedListeners>
<sources>
<source name="System.ServiceModel" switchValue="Verbose, ActivityTracing" >
<listeners>
<add name="sharedListener" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
<listeners>
<add name="sharedListener" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics performanceCounters="All" wmiProviderEnabled="True">
<messageLogging
logEntireMessage="True"
logMalformedMessages="True"
logMessagesAtServiceLevel="True"
logMessagesAtTransportLevel="True"
maxMessagesToLog="3000"
maxSizeOfMessageToLog="30000"/>
</diagnostics>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
这在配置节点下的app.config/web.config中.
2.找到响应
快速验证您是否实际从远程服务接收服务响应是在Visual Studio中将日志文件作为xml文件打开并进行搜索
Source="TransportReceive"
您应该能够在此MessageLogTraceRecord节点中查看远程服务已响应的内容.
3.工具
用于查看这些消息的推荐工具是 SvcTraceViewer.exe
你应该能够在以下任何一个中找到它:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64
要么
C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
如果您没有此工具,可以在Windows Sdk中找到它
| 归档时间: |
|
| 查看次数: |
4132 次 |
| 最近记录: |