BizTalk WCF Oracle Adapter:发送DateTime值

时间:2012-03-01 14:20:11

标签: wcf oracle biztalk

我正在尝试使用WCF Oracle适配器在Oracle表中插入数据。该表有一个DateTime字段。我使用尊重字段在业务流程中设置字段的值,然后将消息发送到配置为使用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,它指定了一个时区(GMT + 0)

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

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

1 个答案:

答案 0 :(得分:0)

我找到的解决方法是在发送端口中安装map / xslt / pipeline,以Oracle期望的格式重新格式化日期时间。因此,业务流程仍然使用时区写入日期,但在发送到Oracle之前将其删除。