You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BizTalk自定义管道组件值传递至编排的实现问询

BizTalk自定义管道组件属性传递至编排配置方案

一、当前配置正误判断

你目前的操作大部分正确,但有两处关键遗漏:

  • 属性架构的字段未设置Property Type为Promoted,这是导致无法在消息中选择属性架构的核心原因
  • Execute方法仅做消息透传,未实现上下文属性的写入逻辑

二、完整配置步骤(解决属性架构无法选择问题)

1. 补全属性架构配置

打开你的PropertySchema.xsd,对UserName和Password字段分别做以下设置:

  • 把Property Type改为Promoted(只有Promoted属性会被提升到消息上下文,才能在编排中直接访问)
  • 确保属性架构的命名空间唯一,避免和现有架构冲突
  • 字段数据类型设为string,和管道组件的属性类型匹配
    编译并部署属性架构项目到BizTalk。

2. 修改自定义管道组件的Execute方法

  • 在管道组件项目中引用属性架构生成的dll
  • 更新Execute方法,添加上下文属性写入逻辑:
public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
{
    // 从管道组件自身属性获取账号密码
    string userName = this.Username;
    string password = this.Password;

    // 将属性写入消息上下文,替换成你的属性架构静态类名
    pInMsg.Context.Write(PropertySchema.UserName.Name, PropertySchema.UserName.Namespace, userName);
    pInMsg.Context.Write(PropertySchema.Password.Name, PropertySchema.Password.Namespace, password);

    // 消息正常透传
    return pInMsg;
}

编译管道组件,部署后添加到接收管道的对应阶段(一般是Decode或Validate阶段)。

3. 编排中访问属性

  • 在编排项目中引用属性架构的dll
  • 不需要将属性架构绑定到消息结构,直接通过消息上下文访问:
    在表达式形状中写:
// 替换成你的消息名和属性架构类名
strUserName = ReceiveMsg(PropertySchema.UserName);
strPassword = ReceiveMsg(PropertySchema.Password);

三、密码掩码实现

1. 管道组件属性掩码

在管道组件的Password属性定义上添加PasswordPropertyText特性,这样在BizTalk控制台输入密码时会显示为***:

[Browsable(true)]
[Description("登录密码")]
[PasswordPropertyText(true)]
public string Password { get; set; }

2. 敏感信息安全处理

  • 属性架构中,把Password字段的Tracking设为None,防止密码被记录到BizTalk跟踪数据库
  • 编排中使用完密码后,及时清空变量,减少敏感信息在内存中的留存时间

四、核心操作教程要点

  • 属性架构区分:Promoted属性用于跨组件/编排的上下文传递,Distinguished属性仅适用于消息结构内的字段访问,这里必须用Promoted
  • 部署顺序:先部署属性架构,再部署依赖它的管道组件,最后部署编排,避免依赖错误
  • 调试方法:通过BizTalk管理控制台的消息跟踪功能,查看消息上下文是否包含你提升的属性;也可以在管道组件中加日志(比如写入Windows事件查看器)验证属性值是否正确

内容的提问来源于stack exchange,提问作者Emperor 2052

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:13:00