【问题标题】:How to get raw data from Web Service Request?如何从 Web 服务请求中获取原始数据?
【发布时间】:2011-04-28 18:38:01
【问题描述】:

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

我看到了建议:在 HttpApplication 中处理“BeginRequest”事件。但我没有看到“请求”对象的哪个字段包含此 POST 数据?

【问题讨论】:

    标签: web-services post asmx


    【解决方案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>
    

    【讨论】:

    • 什么没有设置为详细? : 哦
    • 哦天哪...您看到一个带有损坏 xml 的 asnwer,不是吗? :P 我第一次引用不好,但你可以寻找链接查看完整的帖子:)
    • 对不起,我没有找到列出的主题,谢谢你的帮助。不幸的是,建议的方法没有记录任何内容...不知道为什么...在 MSDN 上找到了文章,将尝试弄清楚...
    • 可能,我确实需要执行 Trace.Write... ?但是在这种情况下如何访问行数据?
    • 问题在于日志文件夹的访问权限。感谢您的帮助
    【解决方案2】:

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

    我有两个解决方案给你:

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

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

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

    【讨论】:

    • System.Net 追踪非常完美!
    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2020-09-01
    • 1970-01-01
    • 2012-02-24
    • 2021-01-09
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多