为什么 Dynamics AX 集成框架不接受 xsi:type 属性上的命名空间前缀,我该如何实现?

Why won't Dynamics AX integration framework accept namespace prefixes on xsi:type attributes and how do I make it?

我正在编写与 Dynamics AX 的集成,调用入站 Web 服务来创建全球地址簿条目。

创建请求包含一个实体主体

<DirPartyTable xsi:type="ns0:Axd_DirPartyTable_DirOrganization">

Web 服务拒绝此实体类型名称的抱怨,并显示错误消息:

Error - Invalid instance type name 'ns0:AxdEntity_DirPartyTable_DirOrganization'.

所有类型和名称都是从服务 WSDL 生成的。对于其他集成,使用字符串替换操作请求以删除此命名空间前缀会使请求被接受。

为什么 AX 不允许这个完全有效的属性,我必须做什么配置才能做到这一点?

这个问题的背景是我正在开发外部集成并且对 AX 几乎一无所知 - 但我不太可能得到任何了解该产品的人的时间,除非我能证明有一个简单的解决问题而不是在我的最后破解它。

虽然我自己没有遇到过这种确切的情况,但过去为 AX 编写了多个集成,但我立即想到的是,您正试图将数据插入到基于 table 的 table 中。 =25=]继承。

这意味着 table 实际上并不存在于 SQL 中,它只是 AX/X++ 为便于开发而添加的抽象。 DirPartyTable是SQL中的"real"table,DirOrganization是AX中的继承抽象,为父DirPartyTabletable增加了更多字段。 DirPerson 是另一个继承自 DirPartyTable 的 table。问题是,DirOrganization 和 DirPerson 都不存在于 SQL 中,它们实际上是 DirPartyTable 的不同子项,在它们各自的 "tables" 中添加了 X++ 逻辑和额外字段。这可能最终会导致实体出现问题,据我所知,table 继承在过去曾让我感到悲伤。

如果您有 AX 开发人员资源,我会请 him/her 调查这条思路,看看 table 继承是否给您带来了问题。

至于需要什么配置才能使其有效,我没有答案。

事实证明,原因是作为 Roles 元素内容提供的以分号分隔的值列表包含无法识别的值。这显然与具有某些预配置值的下拉列表相匹配。当然,错误消息并没有表明这是问题所在。