我在 BizTalk 2020 中使用 AzureBlobStorage 适配器并从 Azure Blob 存储接收 blob。这些 blob 具有我想在编排中使用的元数据。因此,我创建并部署了一个包含元数据键作为元素的架构。
在接收位置中,我使用架构的命名空间输入“blob 元数据的命名空间”,并选中“提升元数据属性”复选框
不幸的是,我收到以下错误:“按命名空间按列表加载属性信息失败或在列表中找不到属性。请验证架构是否已正确部署。”
架构:
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://POC.Test.AzBlobMetadata.AzLaParameters" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://POC.Test.AzBlobMetadata.AzLaParameters" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:appinfo>
<b:schemaInfo schema_type="AzLaParameters" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
</xs:appinfo>
</xs:annotation>
<xs:element name="MetaData">
<xs:complexType>
<xs:sequence>
<xs:element name="la_name" type="xs:string" />
<xs:element name="la_runid" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
接收位置/适配器配置:
自提出问题以来,您希望在 2 1/4 年内解决该问题?对于 BizTalk 开发中处于令人遗憾的孤独状态的其他人来说,这里是:
首先,您创建了一个 Message 模式,这是行不通的。您需要创建一个“属性”架构,将每个元数据键分配给 Blob 对象一个字段。如果架构的目的是用于消息路由的可提升属性,则每个字段都应将“Property Schema Base”设置为类型“MessageContextPropertyBase”。为架构提供一个良好的目标命名空间和本地命名空间。现在将架构部署到公共资源应用程序。 一个例子:
在 AzureBlobStorage 接收位置上,输入目标命名空间作为 Blob 元数据的命名空间。订阅发送端口时,您将在过滤器的下拉列表中看到属性架构的本地命名空间。
但对我来说,真正的问题是属性架构字段必须与在 blob 元数据上写入的任何函数设置的属性完全匹配。因此,为了第一次就得到正确的结果,您应该检查代码的大小写和拼写是否准确,并确保添加 blob 可能具有的所有元数据键。如果您选择“升级属性”,则将尝试所有属性,但缺少一个属性 - 或大小写不匹配 - 将足以出现错误。这也意味着您需要确保 Azure 端的开发人员不会随意添加元数据。
如果仍然出现错误,您可以尝试删除“升级”选项(保留命名空间)并暂停接收的消息,因为所有元数据都将在 Context Props 中,只是不升级。但请注意,挂起消息下显示的上下文属性将不会准确显示大小写,所有元数据属性都将以大写首字母显示!这确实是一种误导。