.NET日志或查看SOAP WebService的调用/响应

Bud*_*Joe 4 .net debugging logging soap web-services

在.NET中检查来自Web服务的调用和响应的最佳方法是什么?
我正在与用Perl编写的Web服务进行交互并遇到问题.
如何捕获呼叫和响应的文本?

更新:
基于评论澄清:我想通过.NET做到这一点,所以我可以记录它或在出现问题时通过电子邮件发送它.

Kev*_*Kev 10

您可以通过SoapExtension在Web服务客户端中创建并启用它来执行此操作:

System.Web.Services.Protocols.SoapExtension类(MSDN)

上面的链接提供了一个示例代码框架,用于记录对文件的请求/响应.

要在您的应用程序中启用,请将以下内容添加到您的web.config或app.config:

<webServices>
    <soapExtensionTypes>
        <add type="YourNamespace.TraceExtension, AssemblyName" 
             priority="0" group="High"/>
    </soapExtensionTypes>
</webServices>
Run Code Online (Sandbox Code Playgroud)

我自己的SOAP跟踪扩展在它自己的项目/程序集中实现.每当我需要调试请求/响应时,我只需将DLL放在应用程序文件夹(/ bin for ASP.NET)中,并添加对配置文件的引用,如上所述.

例如:

<webServices>
   <soapExtensionTypes>
      <add 
         type="DebugTools.SOAP.SOAPTrace.SoapTraceExtension, DebugTools.SOAP" 
         priority="0" group="High"/>
   </soapExtensionTypes>
</webServices>
Run Code Online (Sandbox Code Playgroud)

DebugTools.SOAP.SOAPTraceSoapTraceExtension
DebugTools.SOAP包含soap跟踪代码的程序集名称的名称空间.


Wya*_*ett 4

Fiddler是您在网络服务的不稳定世界中最好的朋友。


不,正如所指出的,它不会在代码内执行任何操作。你也不希望它这样——调试不应该改变进程的语义,或者你正在调试你的调试代码。

另外,我喜欢用wireshark,但fiddler 对于HTTP 东西来说更好一些,因为它被设计为专注于HTTP。如果我从网络上抓取字节,那么它一直都是wireshark。