我已经按照以下说明使用 SVCUTIL.exe 创建了一个 WCF 客户端:http://msdn.microsoft.com/en-us/library/ms733133.aspx
它创建一个 app.config 和一个 soapproxy.cs 文件以供使用。
我想不出任何方法来获取用于调试目的的原始 XML。
Google 有很多向 web.config 文件添加跟踪扩展的示例,但是我没有 web.config 文件...我找到的示例是针对 web.service 而不是 System.ServiceModel;
我需要访问 XML soap 调用以便调试它吗?
更新: 我正在尝试编辑配置跟踪以查看 SOAP XML。
我已将其添加到 app.config 文件中
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
但是出现的跟踪日志似乎不包含原始 XML
最佳答案
为了快速调试,我使用 WCF 测试客户端。它非常简单,可以与 WCF 和 ASMX 服务一起使用。我还用它来使用用 Java 编写的第三方应用程序的服务(使用 wsdl 定义)。
开始 -> Visual Studio 2010 命令提示符 -> wcftestclient.exe
或
开始 -> Visual Studio 2008 命令提示符 -> wcftestclient.exe
这里的信息:http://msdn.microsoft.com/en-us/library/bb552364.aspx
这具有查看 XML/SOAP 请求和响应的能力。
我还使用 XMLTraceListener。这会在我的应用程序路径中为我生成跟踪,并且我能够查看整个请求/响应正文。
这是我的 web.Config 部分
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="All">
<listeners>
<add name="xmlTraceListener" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="All">
<listeners>
<add name="xmlTraceListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xmlTraceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="ApplicationTrace.svclog" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
关于c# - 从 WCF 创建客户端查看 SOAP XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8317771/