2009-09-02 22 views
2

申し訳ありませんが、この問題は死に至るまで殴られましたが、私の質問にはうまく答えられないようです。DateTime XMLの逆シリアル化

Webサービスを使用する.NET 2.0クライアントを作成しました。私が呼び出すWebメソッドは、UTC形式でいくつかのDateTime値を返します。

値がDateTimeKind.Localとして逆シリアル化されているようです。私はこれが.NET SOAPフレームワークのデフォルトの動作であると仮定します。しかし、私はDateTimeKind.Unspecifiedされる値が必要です。

これらのDateTime値の逆シリアル化を無効にする方法はありますか?

+0

日付がシリアル化されている場合、Dateの種類はDateTimeKind.UnspecifiedまたはDateTimeKind.Localに等しいですか? –

+0

私は分かりません。私はWebサービスを作成しませんでした。私は彼らが非直列化されている方法を変更する必要があります。 –

答えて

1

は、これは私がMSDNで見つけたものです:

.NET Frameworkバージョン 1.0と1.1を使用して、 System.XML.SerializationスルーUCT時間を表し、DateTime値を送信しないでください。 Date、Time、DateTimeの値は になります。 System.DateTimeを含むWebサービスおよびその他の形式の XMLへのシリアル化の場合、 のDateTime値の値が であることが、現在のマシンのローカル時刻を表していることを必ず確認してください。 シリアライザは、 がGMT(オフセット値= 0)でエンコードされたXMLスキーマ定義DateTime値 を正しくデコードしますが、それをローカルの マシン時刻の視点にデコードします。

.NET 2.0

Thisは記事へのリンクであるため、これはまだ本当であるならば、私は知りません。

1

更新:

のDateTime値は、私が思ったようにUTCに送信されてないです。これらはタイムゾーンオフセットを持つローカル時間です。

しかし、私の問題は依然として残っています。タイムゾーンオフセットなしで逆シリアル化するには、DateTime値が必要です。時間帯を自分の現地時間帯にしたい、私のタイムゾーンに変換しない。

しかし、回避策が見つかりました。それは、すべてのxs:dateTime値からタイムゾーン情報を削除するSoapExtensionの子孫を書くのはかなり簡単であることが判明しました。

関連する問題