2012-03-01 48 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之前將其刪除。