从WCF创建客户端查看SOAP XML

时间:2011-11-29 21:09:41

标签: c# wcf web-services soap

我已按照以下说明使用SVCUTIL.exe创建了WCF客户端:http://msdn.microsoft.com/en-us/library/ms733133.aspx

它创建了一个app.config和一个soapproxy.cs文件供使用。

我无法弄清楚是否有任何方法可以将原始XML用于调试目的。

Google有很多将traceextension添加到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

1 个答案:

答案 0 :(得分:4)

为了快速调试,我使用WCF测试客户端。它非常简单,适用于WCF和ASMX服务。我还使用它来使用用Java编写的第三方应用程序(使用wsdl定义)​​来使用服务。

Start -> Visual Studio 2010 Command Prompt -> wcftestclient.exe

Start -> Visual Studio 2008 Command Prompt -> 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>