导航

读Orchestration Message中Context Property抛出异常

Posted on 2007-04-08 16:23  鸡尾虾的壳  阅读(245)  评论(0编辑  收藏  举报

在以前的一个例子当中使用了读某个消息的某个属性的表达式。结果在Event Log中出现属性无法找到的异常。查了一个Blog后发现,这是由于这个特定的属性在message中不存在造成的。

主要有下面两个解决方法:

1.使用exists关键字
     如***.** exists msg,返回bool值。Orchstration本质上follow XLANG语法的。按照MSDN上的说法,exists是XLANG的一个function,其他的function还包括+,=等等(这些与C#的语义是一致的)。

2.在message上使用XLANGMessage.GetPropertyValue(Type param1)方法。
    传入的参数为typeof(***.**)。如果此属性在此message中不存在,返回null,而不是直接抛出异常。为什么这个方法的参数类型是Type呢。Context Property从来源上来看,分为两种:Biztalk内建的的,系统级;另外一种是通过Property Schema的方式生成的。Biztalk编译时,会把每个Context Property生成为一个Class,其中的属性可能包括namespace,typename,xsd document name,xpath等等(guess的)。


鸡尾虾的壳