【问题标题】:BizTalk WCF-WebHttp - Send header value from the orchestration variableBizTalk WCF-WebHttp - 从业务流程变量发送标头值
【发布时间】:2020-10-17 11:59:35
【问题描述】:

在我的 BizTalk 应用程序中,我有一个 API 调用 (WCF-WebHttp),我需要为此传递一个 sessionid,它是通过调用另一个服务生成的。所以我创建了一个 WCF-WebHttp 发送端口,它将会话 ID 返回给编排。现在我需要将这个 sessionid 值从编排传递到一个发送端口(WCF-WebHttp 静态端口),这个 sessionid 将用于这个 API 调用的标头中。

我通常在 WCF-webhttp 端口的消息选项卡中的 Outbound http 标头中配置标头。但在这里我只能给出静态标题。那么如何将sessionid 标头传递给服务(wcf-webhttp 静态端口),其值是从编排中获得的。我需要为此使用动态端口还是可以在静态端口中实现这一点?如何实现?

【问题讨论】:

  • 我为这类事情使用了自定义 WCF 端点行为。我已经为各种事情做了这个,比如 Auth 标头以及设置正确的 TLS 版本。
  • 但是我如何从编排中获取值以在此处设置标头值。是否可以在这里访问推广的财产或还有其他什么
  • 创建一个消息只提升属性并像往常一样设置它。

标签: c# wcf biztalk orchestration biztalk-2016


【解决方案1】:

尝试使用 MessageOutput(WCF.HttpHeaders) 或 MessageOutput(HTTP.InboundHttpHeaders) 或类似的东西。几个月前我成功地做到了,但现在我不记得究竟是哪种方法了。无论如何,它将返回一个值作为字符串,然后您应该解析该字符串以检索您想要的标头

【讨论】:

    【解决方案2】:

    以下内容可以提供帮助

    xPathString = System.String.Format("string(/[local-name()='loginResponse' and namespace-uri()='urn:enterprise.soap.sforce.com']/ em>[local-name()='result']/*[local-name()='sessionId']/text())"); sessionId = xpath(LoginResponse.parameters, xPathString);

    APIMUrl = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

    SalesforceCallBackRequest(WCF.HttpMethodAndUrl) = "POST"; SalesforceCallBackRequest(WCF.HttpHeaders) = "Content-Type:application/json" + System.Environment.NewLine +"Ocp-Apim-Subscription-Key: XXXXXXXXXXXXXXXXXXXXXXXXX" + System.Environment.NewLine +"Authorization: Bearer" + sessionId;

    SalesforceCallBackRequest(WCF.BindingType) = "basicHttpBinding"; SalesforceCallBackRequest(WCF.SecurityMode) = "传输";

    Port_APIM(Microsoft.XLANGs.BaseTypes.Address) = APIMUrl; Port_APIM(Microsoft.XLANGs.BaseTypes.TransportType) = "WCF-BasicHttp";

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多