在 C# 中记录 Soap 消息
Log Soap message in C#
我有一个向 SOAP 服务发出请求的 C# 控制台程序。
这个 SOAP 消息的接口是用 Microsoft.VSDesigner, Version 4.0.30319.42000.
生成的,步骤如下:
- 右键单击引用
- 选择添加服务参考
- 选择高级
- 添加网络引用
- 输入URL或我正在使用的服务
- 为服务命名
- 单击“添加引用”。
那时我已经生成了调用该服务的代码。
这是调用服务的片段:
[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 还是个新手,所以如果能使用我在屏幕上看到的术语来回答,我将不胜感激。
嗨,有几点需要注意(虽然我接受我无法更改代码以记录请求和响应的事实,但下面是我检查过的其他几个选项,您可以尝试)-
- Get the raw request response by using Diagnostics(Tracing)
我遵循了相同的步骤并添加了 服务参考 并应用了诊断并能够在日志文件中记录原始请求响应 - 您可以阅读有关跟踪的信息 here-
- 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 -
- 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 引用。您可以在以下主题中找到更多详细信息。
我有一个向 SOAP 服务发出请求的 C# 控制台程序。
这个 SOAP 消息的接口是用 Microsoft.VSDesigner, Version 4.0.30319.42000.
生成的,步骤如下:
- 右键单击引用
- 选择添加服务参考
- 选择高级
- 添加网络引用
- 输入URL或我正在使用的服务
- 为服务命名
- 单击“添加引用”。
那时我已经生成了调用该服务的代码。
这是调用服务的片段:
[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 还是个新手,所以如果能使用我在屏幕上看到的术语来回答,我将不胜感激。
嗨,有几点需要注意(虽然我接受我无法更改代码以记录请求和响应的事实,但下面是我检查过的其他几个选项,您可以尝试)-
- Get the raw request response by using Diagnostics(Tracing)
我遵循了相同的步骤并添加了 服务参考 并应用了诊断并能够在日志文件中记录原始请求响应 - 您可以阅读有关跟踪的信息 here-
- 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 -
- 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 引用。您可以在以下主题中找到更多详细信息。