[英]WCF - Inspect the messages being sent/received?
我有 2 个解决方案: - 服务器解决方案 - 客户端解决方案
服务器将自己注册到我的本地主机 IIS: http://localhost/MyApp/
客户端从 localhost 应用程序中添加 WCF 服务(服务参考): http://localhost/MyApp/MyService.svc
当我运行客户端时,我希望能够看到来回传递的消息。 我下载了 Fiddler,但它似乎不想显示任何正在发送的流量,除非我实际使用 web 浏览器。 我使用 Fiddler 是错误的还是我应该为此使用其他工具?
澄清一下,我要做的是查看传递的实际消息。我不想对它们做任何事情,除了用我自己的眼睛直观地看到它们。
我喜欢 WCF 服务日志实用程序,但我认为我的设置不正确。 我看不到实际的 soap 消息,只是收到了一条消息。
而且为了进一步澄清,我不在乎我使用什么工具,只要我可以很容易地看到消息本身。
要查看消息内容,您必须在配置文件中添加 System.ServiceModel.MessageLogging 的源。 Trace Viewer 中的消息选项卡将显示特定服务调用的完整消息。
这是一个示例配置文件:
<configuration>
...
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="All"
propagateActivity="true">
<listeners>
<add name="traceListener" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging"
switchValue="All">
<listeners>
<add name="traceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="500"/>
</diagnostics>
...
</system.serviceModel>
...
</configuration>
有关详细信息,请参阅 MSDN 上的配置跟踪主题。 http://msdn.microsoft.com/en-us/library/ms733025.aspx
如果您想以编程方式检查消息,您可以实现IClientMessageInspector
接口并将其注册到您的客户端。
这允许您访问所有消息,无论您使用什么绑定,而使用像 Fiddler 这样的工具将只允许您使用 HTTP 传输通道检查消息。
请注意,使用这种技术,您实际上可以做很多事情来修改消息或做更多事情(例如,触发通知)。 如果您只想关注消息,那么使用跟踪对您来说可能是一种更简单的方法。
您的服务是 SOAP 还是 RESTful? 您可以使用WCF 服务跟踪查看器工具查看 SOAP 消息头和正文。 此处为配置 web 服务以进行跟踪的说明。
在 WCF 中,我们可以使用另一种方式查看实际的 SOAP 消息 - 自定义 MessageEncoder - 低级管道扩展点。 与消息检查器 (IDispatchMessageInspector / IClientMessageInspector) 不同,它会看到原始字节内容,包括任何格式错误的 XML 数据。 您需要将标准textMessageEncoding包装为自定义绑定元素并调整配置文件以使用该自定义绑定。
看看这个 StackOverflow 线程: How to use Fiddler to monitor WCF service
它回答了你的一些问题。 如果您想检查线路上的所有内容而不是像 Fiddler 那样设置代理,您也可以使用 WireShark 之类的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.