Biztalk-Web Service集成对消息Xsd值类型节点的特殊处理

Summary:Xsd上的某节点属于Enum Type类型,并且nillable属性设置为默认的false。如果一个消息该节点的值不在Enum列表中,当把此消息发送给Web Service时,Engine会默认使用Enum列表中的第一个值作为传入值,并且没有验证错误爆出。原因在于,Enum属于值类型,一定需要有个具体的值赋给这样的属性。但是错误的Enum值会使Engine把这个值清空,但是这与nillable值为false是矛盾的。因此Engine会选用默认值填充。对于Enum类型,取第一个枚举值;对于int类型,取0。如果在xsd上,设置nillable为true,那么Engine会也许null传入。

xsd节点的nillable属性设置为true, 会生成ws cs中的代码范例,

private System.Nullable<POInRootPO> poField;

其中Nullable表示虽然是值类型,但是仍然可以用null赋值,POInRootPO是一个Enum类型。

Original Post:http://blogs.digitaldeposit.net/saravana/post/2008/02/14/BizTalk-Web-Service-Enums-picking-default-values-automatically-and-resulting-in-Xml-Schema-validation-issues.aspx

你可能感兴趣的:(web Service)