asp net core soap请求ws-addressing

Posted

技术标签:

【中文标题】asp net core soap请求ws-addressing【英文标题】:asp net core soap request ws-addressing 【发布时间】:2021-08-19 09:56:50 【问题描述】:

我正在核心上创建一个 wcf 客户端。 我创建了一个绑定。

var binding = new System.ServiceModel.BasicHttpsBinding();

我需要在 ws-addressing 请求中添加 MessageID、ReplyTo 字段。 如何正确操作?

我试图覆盖请求 - 它不起作用。 所有示例大多在通常的网络框架上 好像有一个库 microsoft.web.services2,但我不明白如何使用它。

【问题讨论】:

我不确定你想要做什么甚至是可能的。至少可以说,核心中的 WCF 支持是有限的,ws-addressing 基本上意味着“回调支持”,即 SOAP 服务器。 WCF-core 不支持 SOAP 服务器。而且永远不会:微软说他们认为 SOAP 是一种遗产。如果您需要带有回调的 SOAP,那么 net-core 不是您应该使用的技术。 我解决了我的问题CustomBinding binding = new CustomBinding(); binding.Elements.Add(new TextMessageEncodingBindingElement(MessageVersion.Soap12WSAddressing10, System.Text.Encoding.UTF8)); binding.Elements.Add(new HttpsTransportBindingElement()); 【参考方案1】:

我正在处理相同的要求,我发现修改标头的方法是使用 OperationContextScope 并使用 OperationContext.Current.OutgoingMessageHeaders 并更改属性。

public async Task<getAttorneyResponseStructure> GetAttorneyAsync(GetAttorneyRequestStructure getAttorneyRequestStructure)

  try
  
    using (new OperationContextScope(Client.InnerChannel))
    
      //Client Custom Header
      getAttorneyRequestStructure.AttorneyHeader = Header;
      
      //Change the properties to ReplyTo/MessageId
      OperationContext.Current.OutgoingMessageHeaders.To = new Uri("http://rydwvgsn01.spga.gov.sa/GSBExpress/Legal/MOJAttorneyInquiry/2.0/AttorneyInquiryService.svc");

      OperationContext.Current.OutgoingMessageHeaders.Action = "http://tempuri.org/IAttorneyInquiryService/GetAttorney";

      return await Client.GetAttorneyAsync(getAttorneyRequestStructure);
    
  
  catch (Exception e)
  
   throw;
  

【讨论】:

谢谢。有用的经验

以上是关于asp net core soap请求ws-addressing的主要内容,如果未能解决你的问题,请参考以下文章

在 SOAP 请求 .NET CORE 2.2 上发送的 Http.WinHttpException。收到的消息是意外的或格式错误

从 C# .NET Core(特别是 Workday)调用 Java Web 服务。如何在soap请求中获取xml属性

ASP.NET Web Service 标准SOAP开发案例代码(自定义验证安全头SOAPHeader)

ASP.NET与SOAP协议使用记录

ASP.NET与SOAP协议使用记录

Coldfusion SOAP 请求预览