【发布时间】:2012-03-01 14:20:10
【问题描述】:
我正在尝试使用 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 转换为字符串,而不是由我的代码。
【问题讨论】: