如何从Web服务请求获取原始数据?

时间:2010-10-21 18:01:48

标签: web-services post asmx

我想检查我的Web服务方法收到的原始数据字符串(原始xml)(用于记录和调试)。

我看到了建议:在HttpApplication中处理'BeginRequest'事件。但我不知道'Request'对象的哪个字段包含这个POST数据?

2 个答案:

答案 0 :(得分:1)

相关问题:Getting RAW Soap Data from a Web Reference Client running in ASP.net

- 您是否使用跟踪看到了this的答案?或this one使用SoapExtension

  

我在web.cofig中进行了以下更改   获取SOAP(请求/响应)   信封。它使trace.log文件   所有必需信息都在哪里   本

<system.diagnostics>
<trace autoflush="true"/>
<sources>
  <source name="System.Net" maxdatasize="1024">
    <listeners>
      <add name="TraceFile"/>
    </listeners>
  </source>
  <source name="System.Net.Sockets" maxdatasize="1024">
    <listeners>
      <add name="TraceFile"/>
    </listeners>
  </source>
</sources>
<sharedListeners>
  <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log"/>
</sharedListeners>
<switches>
  <add name="System.Net" value="Verbose"/>
  <add name="System.Net.Sockets" value="Verbose"/>
</switches>

答案 1 :(得分:1)

将所有请求发布数据保留在请求对象中是没有意义的,因为它可能包含上传的文件并且非常大。

我有两种解决方案:

1)在服务器上使用 Fiddler 并在本地浏览网站(使用服务器名称而不是localhost,因为Fiddler无法显示localhost请求/响应)

2)使用System.Net跟踪:http://support.microsoft.com/kb/947285

您也可以使用WireShark来查看数据包,但这不会保留请求响应上下文。