.net 如何检查web服务请求期间发送的xml?

.net 如何检查web服务请求期间发送的xml?,.net,web-services,.net,Web Services,有没有一种方法可以获取由.net中的SOAP请求生成的原始XML。我不知道该如何准确地问这个问题,但事情是这样的 我添加了web引用并调用了一些方法。有没有办法知道发送的是什么XML。仅用于调试目的,如此快速和肮脏的方式就足够了 附言。 使用SSL,所以剪断在这里没有帮助您可以尝试:。我通常用SSL做这种事情 将其粘贴到配置文件中:- <system.net> <defaultProxy enabled="true"> <proxy prox

有没有一种方法可以获取由.net中的SOAP请求生成的原始XML。我不知道该如何准确地问这个问题,但事情是这样的

我添加了web引用并调用了一些方法。有没有办法知道发送的是什么XML。仅用于调试目的,如此快速和肮脏的方式就足够了

附言。
使用SSL,所以剪断在这里没有帮助

您可以尝试:。

我通常用SSL做这种事情

将其粘贴到配置文件中:-

<system.net>
    <defaultProxy enabled="true">
        <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/>
    </defaultProxy>
</system.net>


启动fiddler,您应该能够监视来自应用程序的所有http流量。在关闭fiddler之前,只需将enabled设置为false。

获取通过网络发送的任何数据的最简单方法是在原始数据通过网络堆栈时安装并窥探它。这样做的好处是,在任何其他应用程序或服务进行修改之前,您可以真正看到发送的内容。网络上有大量的信息


你也可以用它来。它也适用于其他网络—不仅适用于SOAP,还适用于普通HTTP和TCP,甚至串行通信。

您可以创建一个SoapExtensionAttribute,并将其应用于您的web服务方法

创建从SoapExtensionAttribute派生的类

创建从SoapExtension派生的另一个类

SoapExtensionAttribute的类型应该是SoapExtension的类型

一旦进入SoapExtension,就可以访问数据被序列化/反序列化的时刻

以下是4个具体阶段:

SoapMessageStage.BeforeSerialize
SoapMessageStage.AfterSerialize           *
SoapMessageStage.BeforeDeserialize        *
SoapMessageStage.AfterDeserialize
带有“*”的是您希望访问流的阶段。 从那里,您可以记录进出web服务的xml

这就是我们在这里所做的,它工作得非常完美

以下是一个详细说明的链接:


希望对您有所帮助。

您是否看到SoapMessage返回的流是只写的?我正在尝试你的建议,很快就会有结果的。是的,诀窍是在你的SoapExtension内的内存流中复制这个流。