gpt4 book ai didi

c# - 如何获取 WCF Web 服务请求的 XML SOAP 请求?

转载 作者:IT王子 更新时间:2023-10-29 03:42:59 25 4
gpt4 key购买 nike

我在代码中调用此 Web 服务,我想查看 XML,但找不到公开它的属性。

最佳答案

我认为您的意思是希望在客户端查看 XML,而不是在服务器端跟踪它。在这种情况下,您的答案在我上面链接的问题中,也在 How to Inspect or Modify Messages on the Client 中。 .但是,由于那篇文章的 .NET 4 版本缺少它的 C#,并且 .NET 3.5 示例中有一些困惑(如果不是错误的话),这里为了您的目的对其进行了扩展。

您可以使用 IClientMessageInspector 在消息发出前拦截消息:

using System.ServiceModel.Dispatcher;
public class MyMessageInspector : IClientMessageInspector
{ }

该接口(interface)中的方法 BeforeSendRequestAfterReceiveReply 使您可以访问请求和回复。要使用检查器,您需要将其添加到 IEndpointBehavior :

using System.ServiceModel.Description;
public class InspectorBehavior : IEndpointBehavior
{
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.MessageInspectors.Add(new MyMessageInspector());
}
}

您可以将该接口(interface)的其他方法保留为空实现,除非您也想使用它们的功能。阅读操作指南了解更多详情。

实例化客户端后,将行为添加到端点。使用示例 WCF 项目中的默认名称:

ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
client.Endpoint.Behaviors.Add(new InspectorBehavior());
client.GetData(123);

MyMessageInspector.BeforeSendRequest()中设置断点; request.ToString() 被重载以显示 XML。

如果您要对消息进行操作,则必须处理该消息的副本。参见 Using the Message Class了解详情。

感谢Zach Bonham's answer在寻找这些链接的另一个问题。

关于c# - 如何获取 WCF Web 服务请求的 XML SOAP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5493639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com