2012-03-01 47 views
0

我试图使用WCF Oracle适配器在Oracle表中插入数据。该表有一个DateTime字段。我使用区分字段在业务流程中设置字段的值,然后将消息发送到配置为使用WCF Oracle适配器的发送端口。BizTalk WCF Oracle适配器:发送日期时间值

这给了我,当消息被发送到Oracle以下错误:

价值领域是无效的。 DateTime.Kind必须是DateTimeKind.Unspecified。确保DateTime值中不包含TimeZone或TimeZoneOffset。

我试图用这个来迫使DateTimeKind是不确定:

msg.ProcessedDateTime = System.DateTime.SpecifyKind(
    System.DateTime.Now.ToLocalTime(), 
    System.DateTimeKind.Unspecified); 

,但我仍然得到同样的错误消息。

我还可以看到,对于该消息生成的XML使用的日期的格式如下:YYYY-MM-DDTHH:MM:ss.ffffffZ

这个问题似乎是与Z在的端部字符串,它指定一个时区(格林尼治标准时间+0)

我不能简单地分配给“ProcessedDateTime”属性一个任意的字符串(我可以控制的格式),因为模式定义字段为xs: dateTime,所以编排要求我使用System.DateTime值。

如何强制System.DateTime表示到而不是包含任何时区信息?请注意,我无法直接控制该表示,因为DateTime通过BizTalk转换为字符串,而不是由我的代码转换。

回答

0

我发现的解决方法是在发送端口中有一个map/xslt /管道,用于以Oracle预期的格式重新格式化日期时间。所以编排仍然将时间写入时区,但在发送到Oracle之前将其删除。