我有一个带有basicHttp绑定的简单WCF服务。该服务在IIS7中本地托管(Win7笔记本电脑)。我可以在http://localhost/musicstore/musicstore.svc浏览该服务 (80号港口)
我开发了一个简单的Windows窗体客户端应用程序来调用该服务。它工作正常,但我真的希望通过Fiddler2看到消息调用/响应。当我浏览网页时,Fiddler2会愉快地报告流量,所以我无法理解为什么它没有接收到这个WCF呼叫?
是否有其他方法可以查看WCF调用的数据。也许有微软工具?
客户端配置为:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://localhost/musicstore/musicstore.svc"
binding="basicHttpBinding" bindingConfiguration="" contract="MusicStore.IMusicStore"
name="BasicHttp" />
</client>
</system.serviceModel>
</configuration>
服务配置为:
<services>
<service behaviorConfiguration="MusicStoreBehavior" name="MusicStore">
<endpoint address="" binding="basicHttpBinding" contract="IMusicStore">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
答案 0 :(得分:15)
查看WCF正在做什么的最简单方法是打开WCF自己的登录。您可以通过编辑web.config并添加
来完成此操作<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\logs\messages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="3000"
maxSizeOfMessageToLog="2000"/>
</diagnostics>
</system.serviceModel>
MSDN提供了有关您可以配置的内容的更多详细信息。您可以在Service Trace Viewer。
中查看日志答案 1 :(得分:8)
这个问题有很多重复,其中很多都有正确的答案。您应该使用http://localhost.fiddler/作为目标,.NET将正确代理请求。在传递请求之前,Fiddler会将“localhost.fiddler”更改为“localhost”。
答案 2 :(得分:3)
您可以修改客户端的配置文件:
<configuration>
<system.net>
<defaultProxy>
<proxy bypassonlocal="false" usesystemdefault="true" />
</defaultProxy>
</system.net>
</configuration>
或者您可以使用:
GlobalProxySelection.Select = new WebProxy("127.0.0.1", 8888);
来自:Fiddler site
答案 3 :(得分:0)
我遇到了同样的问题并以这种方式修复:
使用荷兰尼科的代理配置(见下文)
确保您的客户端应用程序使用“外部”IP。所以192.168.1.X而不是localhost。
您可能需要更改WCF配置以允许asp.net 4.0的多个绑定
<serviceHostingEnvironment multiplesitebindingsenabled="true"/>