在C#中记录Soap消息

问题描述 投票:2回答:1

我有一个C#控制台程序,它向SOAP服务发出请求。

使用Microsoft.VSDesigner, Version 4.0.30319.42000.生成SOAP消息的接口,其中包含以下步骤:

  1. 右键单击引用
  2. 选择添加服务参考
  3. 选择高级
  4. 添加Web引用
  5. 输入我正在使用的URL或服务
  6. 命名服务
  7. 单击添加引用。

此时,我生成了调用服务的代码。

这是调用服务的片段:

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.xxxxx.com/VerifyInsurance", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("CoverageResponseDocument", Namespace="http://www.xxxxx.com/CoverageVerification/")]

public CoverageResponseDocument VerifyInsurance([System.Xml.Serialization.XmlElementAttribute(Namespace="http://www.xxxxx.com/CoverageVerification/")] CoverageRequest CoverageRequest) 
{
    object[] results = this.Invoke("VerifyInsurance", new object[] {
                    CoverageRequest});
    return ((CoverageResponseDocument)(results[0]));
}

我可以更改哪些内容,以便可以看到发送和接收的SOAP消息的确切字符串?

通过更改代码或更改配置。

我是一名长期开发人员,但对视觉工作室来说是新手,所以我很欣赏使用我在屏幕上看到的术语的答案。

c# soap-client
1个回答
1
投票

嗨几点需要注意(尽管我接受的事实是我无法更改代码以获取请求和响应记录,下面是我检查过的其他几个选项,您可以尝试) -

  1. 使用诊断程序(跟踪)获取原始请求响应

我已按照相同的步骤添加了服务参考并应用了诊断并能够在日志文件中记录原始请求响应 - 您可以阅读有关跟踪here-的信息

  1. 如果您可以访问您的Web服务代码,那么您可以编写Soap Extensions。

所以SOAPExtention就是

使用ASP.NET创建的XML Web服务的SOAP扩展的基类。

扩展类提供处理原始请求和响应的粒度级细节。有一种方法可以将这些记录到跟踪日志文件中供您检查。一个例子可以找到here -

  1. 另一种方法是在Visual Studio外部使用fiddler来监控http和https的流量

SO中还有另一个线索,它说的是相同的。请看一看。

Getting RAW Soap Data from a Web Reference Client running in ASP.net

下面的讨论更多的是使用SOAP代理。添加Web引用是引用客户端代理的旧方法。如果没有理由仅使用Web引用,则使用服务引用而不是Web引用。您可以在下面的主题中找到相同的更多详细信息。

https://stackoverflow.com/questions/2158106/web-reference-vs-service-reference?answertab=active#tab-top

© www.soinside.com 2019 - 2024. All rights reserved.