Xsd BizTalk:在升级的属性中获取错误

Xsd BizTalk:在升级的属性中获取错误,xsd,biztalk,biztalk-2010,orchestration,biztalk-orchestrations,Xsd,Biztalk,Biztalk 2010,Orchestration,Biztalk Orchestrations,当我运行业务流程并试图通过读取另一个提升属性的值来为提升属性赋值时,我遇到以下错误 if(BankProcesses.Schemas.Internal_ID exists msgCallHeaderSP_Response) { strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID); msgCallSP(BankProcesses.Schemas.Header_Internal_ID

当我运行业务流程并试图通过读取另一个提升属性的值来为提升属性赋值时,我遇到以下错误

if(BankProcesses.Schemas.Internal_ID exists msgCallHeaderSP_Response)
{
    strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID);

    msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;
}
挂起的业务流程中出现错误:

内部异常:消息中没有与属性BankProcesses.Schemas.Internal_ID'关联的值

详细信息

我有两个XSD模式,一个用于调用存储过程并读取其响应,另一个用于将其写入平面文件。SP响应中返回的内部ID需要传递给另一个XSD架构中的节点,以写入平面文件格式

我已经从响应模式中提升了一个元素,还将模式中的一个元素提升为写入平面文件。我将价值分配给促销的房地产,如下所示:

strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID);

msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;
但是当我运行编排时,我得到了上面提到的错误。我已经检查了来自存储过程的响应,并且响应XML确实包含一些值,但是我无法将该值分配给另一个模式。请指教

谢谢,
Mayur

可能导致此错误的一种情况是,您试图修改的消息中没有Header\u Internal\u ID元素。您能否在修改之前检查消息,以确保有一个元素的值应该更改—可能将消息放到文件位置

如果是这种情况,那么请确保在第一次实例化r消息时创建此元素,即使最初将其设置为空元素也是如此


HTH

要检查属性是否存在,可以使用以下语法:

BMWFS.LS.BizTalk.CFS.BankProcesses.Schemas.Internal\u ID存在msgCallHeaderSP\u响应

但是,如果情况是源字段始终存在,则必须反向查找属性未出现在上下文中的原因

如果消息来自某个端口,那么消息是否通过XML拆装器组件传递?如果它来自另一个编排,您是否确实设置了该属性


查看上下文的最简单方法是将消息msgCallHeaderSP\u Response路由到停止的发送端口。然后,您可以在BizTalk Administrator中查看上下文。

您可以使用
exists
检查属性是否存在

if(BankProcesses.Schemas.Internal_ID exists msgCallHeaderSP_Response)
{
    strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID);

    msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;
}

如果您只想将它从一条消息复制到另一条消息,而不需要对其进行升级(这样就可以从消息上下文访问它),那么最好将其区分开来,而不是进行升级。升级具有较高的处理成本。内部_ID是什么数据类型?