【问题标题】:Print a soap request and response of a C# webservice打印 C# Web 服务的肥皂请求和响应
【发布时间】:2012-05-07 12:43:23
【问题描述】:

我是 Web 服务的新手,我有一个问题。 我有一个网络服务和这样的方法,

     CompanyOpereations srv = new CompanyOperations();
           srv.getCustomerInfo(input);

我想获取和响应。写getCustomerInfo方法的soap请求和响应。

有人可以帮助我吗? 我已经看到了这个,但是我登录到我需要在屏幕上打印的文件, Getting RAW Soap Data from a Web Reference Client running in ASP.net

我什至见过这个但不知道如何调用它,我的客户的 WriteOutput 方法可以请人帮助我吗? http://msdn.microsoft.com/en-us/library/ms972353.aspx

提前致谢。

如果我的问题不清楚,请告诉我!!

这不是为了调试。它是为了将它打印为方法的输出,以便其他人可以在其他地方使用 XML。

谢谢!

【问题讨论】:

  • 是否仅用于调试?你可以简单地使用Fiddler
  • 不,这不是用于调试的。它用于将其打印为方法的输出,以便其他人可以使用 XML!

标签: c# web-services soap logging


【解决方案1】:

我可能会使用 SOAP 拦截扩展,他们只是将所有内容写入日志:

ASP.NET 允许通过可扩展性机制构建与 SOAP 相关的基础结构。 ASP.NET SOAP 扩展架构围绕一个扩展,该扩展可以在客户端或服务器上的消息处理的特定阶段检查或修改消息强>。

MSDN docs 有一个很好的完整示例...


添加: 我无法实现上面的答案,所以我流氓了。

将此添加到您的 web.config 文件中:

<configuration>

  <system.diagnostics>
    <trace autoflush="true" useGlobalLock="false"/>
    <sources>
      <source name="System.Net">
        <listeners>
          <add name="traceFile"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="traceFile"
           type="System.Diagnostics.TextWriterTraceListener"
           initializeData="App_Data/trace.log"
           traceOutputOptions="None">
      </add>
    </sharedListeners>
    <switches>
      <add name="System.Net" value="Verbose"/>
    </switches>
  </system.diagnostics>

</configuration>

这将在App_Data/trace.log 中输出一个日志文件,即like this one。

只需解析该文件或按原样使用它...

我没有找到任何其他方式,因为ServiceClient 上没有显示此类信息的方法。

我也有set up a small Weather Service Project,所以你可以看看它并查看正在创建的日志文件

【讨论】:

  • 能告诉我如何调用这个方法吗?我的意思是在调用我的方法后我应该如何开始??我的意思是在这个 CompanyOperations srv = new CompanyOperations(); srv.getCustomerInfo(输入);
  • 添加一个简单的项目以及如何设置服务日志
  • 感谢您的帮助 @balexandre 这为我节省了很多时间 :)
【解决方案2】:

我可以解决这个问题的最好方法是在我返回一个对象时序列化我的对象:)

【讨论】:

    【解决方案3】:

    虽然这个实用程序来自石器时代,但在我使用它时它做得很好:SOAP Toolkit 3.0。我猜他们从那时起添加了更复杂的方法,但你应该先尝试一下。

    【讨论】:

    • 谢谢你的回复。你有我可以看到的例子吗??
    • 一旦你启动它,它应该充当你的应用程序和网络服务之间的代理。基本上,您必须将应用程序定向到另一个端口,例如 8080,然后让代理将它们转发到端口 80,但这取决于您使用的具体实现。我还知道,自 .NET 2.0 以来,Microsoft 对 SOAP 包装器进行了很多更改……很抱歉,我无法提供更多帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多