我有两个解决方案: - 服务器解决方案 - 客户解决方案
服务器将自己注册到我的localhost IIS:http://localhost/MyApp/
客户端从localhost应用程序添加WCF服务(服务引用):http://localhost/MyApp/MyService.svc
当我运行客户端时,我希望能够看到来回传递的消息。我下载了Fiddler,但除非我实际使用网络浏览器,否则它似乎不想向我显示任何流量。我使用Fiddler是错误还是我应该使用另一种工具呢?
为了澄清,我要做的是看到传入的实际消息。我不想对它们做任何事情,除非亲眼看到它们。
我喜欢WCF服务日志工具,但我认为我没有正确的设置。我看不到实际的肥皂信息,只是收到了一条消息。
而且为了进一步澄清,只要我能够轻松看到消息本身,我就不在乎使用什么工具。
答案 0 :(得分:40)
要查看消息内容,必须在配置文件中添加System.ServiceModel.MessageLogging的源。跟踪查看器中的消息选项卡将显示特定服务调用的完整消息。
以下是配置文件示例:
<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
答案 1 :(得分:14)
也许我错过了什么,但...... 为什么不使用WCF跟踪功能?这是一个很棒的故障排除工具。我已将它用于IIS / WAS中托管的服务。
BTW,有些人不知道,但你可以同时从服务器端和客户端打开跟踪,查看器会在一个漂亮的图表中显示服务器和客户端操作之间的关联。编辑:每当我必须捕获TCP / IP流量时,我都使用WireShark。如果您需要以编程方式执行此操作,可以使用SharpPCAP,这样我就可以根据从网络捕获的内容采取措施。但是对于故障排除,依靠WCF跟踪要好得多。
答案 2 :(得分:5)
如果您想以编程方式检查邮件,可以implement IClientMessageInspector
interface并向您的客户注册。
这允许您访问所有消息,无论您使用什么绑定,而using tools like Fiddler只允许您使用HTTP传输通道检查消息。
请注意,使用此技术,您可以做很多实际修改消息或执行更多操作(例如,触发通知)。如果你想做的只是关注消息,那么using tracing对你来说可能更容易。
答案 3 :(得分:1)
您的服务是SOAP还是RESTful?您可以使用WCF Service Trace Viewer Tool查看SOAP消息标题和正文。配置Web服务以进行跟踪的说明是here。
答案 4 :(得分:0)
看看这个StackOverflow线程:How to use Fiddler to monitor WCF service
它回答了你的一些问题。你也可以使用像WireShark这样的东西,如果你想检查线上的所有东西,而不是像Fiddler那样设置代理。
答案 5 :(得分:0)
在WCF中,我们可以使用另一种方式来查看实际的SOAP消息 - custom MessageEncoder - 一个低级管道扩展点。与消息检查器(IDispatchMessageInspector / IClientMessageInspector)不同,它看到原始字节内容,包括任何格式错误的XML数据。您需要将标准textMessageEncoding打包为自定义binding element并调整config文件以使用该自定义绑定。
另外,您可以在我的项目中看到我是如何做到这一点的 - wrapping textMessageEncoding,记录encoder,自定义绑定element和config。