在以前的一个例子当中使用了读某个消息的某个属性的表达式。结果在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的)。
鸡尾虾的壳