在 C# 中记录 Soap 消息

Log Soap message in C#

我有一个向 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 还是个新手,所以如果能使用我在屏幕上看到的术语来回答,我将不胜感激。

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

  1. Get the raw request response by using Diagnostics(Tracing)

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

  1. If you have access to your web service code then you can write Soap Extensions.

所以 SOAPExtention 是

The base class for SOAP extensions for XML Web services created using ASP.NET.

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

  1. The other approach is to use fiddler outside Visual Studio for monitoring the traffic both http and https

SO 中还有另一个线程讨论了相同的问题。请看一下。

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

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