首页 > 解决方案 > 在 C# 中记录 Soap 消息

问题描述

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

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 很陌生,所以我很感激使用我在屏幕上看到的术语的答案。

标签: c#soap-client

解决方案


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

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

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

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

所以 SOAPExtention 是

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

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

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

SO中有另一个线程在谈论同样的事情。请看一看。

从 ASP.net 中运行的 Web 参考客户端获取 RAW Soap 数据

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

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


推荐阅读