【问题标题】:BizTalk WCF Oracle Adapter: Sending DateTime valuesBizTalk WCF Oracle 适配器:发送 DateTime 值
【发布时间】: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 转换为字符串,而不是由我的代码。

【问题讨论】:

    标签: wcf oracle biztalk


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2019-04-11
      • 2020-12-20
      • 1970-01-01
      相关资源
      最近更新 更多