在C#

时间:2018-09-15 16:47:48

标签: c# soap-client

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

此SOAP消息的接口是通过Microsoft.VSDesigner, Version 4.0.30319.42000.通过以下步骤生成的:

  1. 右键单击引用
  2. 选择添加服务参考
  3. 选择高级
  4. 添加网络参考
  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消息的确切字符串?

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

我是一位长期的开发人员,但是对Visual Studio还是陌生的,因此我希望能得到一个使用我在屏幕上看到的术语的答案。

1 个答案:

答案 0 :(得分:1)

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

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

我遵循了相同的步骤,并添加了 Service Reference 并应用了诊断程序,并能够将原始请求响应记录在日志文件中-您可以了解有关跟踪here-

  
      
  1. 如果您有权访问Web服务代码,则可以编写Soap Extensions。
  2.   

所以SOAPExtension是

  

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

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

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

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