1


0

Webサービスの結果のタイムゾーンに一貫性がない

同じインバウンドリクエストに対して異なるクライアントに異なる結果を返す本番アプリケーション用のWebサービスがあります。

これを発見したのは、生のWCFメッセージをトレースファイルにダンプするようにクライアントを構成し、それを比較した結果です。

1台のクライアントマシンの場合、応答にはタイムゾーン+13:00(別名NZDT(ニュージーランド夏時間))を対象とした日付/時刻が含まれます(ObservedDate要素を参照)。

    0


    true

    0
    2005-09-30T00:00:00+13:00

別のクライアントマシンの場合、応答にはタイムゾーン+12:00-NZST(ニュージーランド標準時)を対象とする日付/時刻が含まれます(ObservedDate要素を参照)。

    0


    true

    0
    2005-09-29T23:00:00+12:00

問題は、クライアントが含まれているタイムゾーン情報を取得していないため、(この例の場合)* 29 September 2005、11:00 pm*をユーザーに表示していることです。

私は再確認しましたが、関係するすべてのマシン(クライアント、アプリケーションサーバー、Webサーバーの両方)がすべてNZSTに正しく構成されています。

画像:https://lh5.ggpht.com/_afoGSadSspw/TF-dDd3IV6I/AAAAAAAAEKY/i0VnwtCq8PE/s800/NZST.png [image]

クライアントとサーバー間でWCFメッセージを追跡すると、私が見た他の唯一の違いは次のとおりです。

  • ``-メッセージが作成されたとき

  • ``-ソースプロセス

  • ``-クライアントコンピューターの名前

  • ``-WCFメッセージのタイムスタンプ?

  • ``-メッセージのGUID

これらの5つの要素はメッセージごとに異なります。それ以外の場合、メッセージストリームは、上記のように日付/時刻が通過することを除いて同一です。

要約する:

  • 両方のテストは同じアプリケーションサーバーに対して実行されます(したがって、 同じデータベース)

  • 同じ要求が両方のクライアントPCによって行われています

  • リクエストへの応答には、some(約20%)の観測があります 間違ったタイムゾーンをターゲット

  • すべてのマシンはタイムゾーン+1200(NZST)に構成されています。

マシン間でパッチまたは何か異なるものが必要であると考えていますが、8時間の検索の後、まだ見つけていません。 御時間ありがとうございます。

更新

_ 「間違った」クライアントは常に同じエントリに対して間違った値を取得しますか、それとも呼び出しごとに異なりますか? それは常に同じ方法で起こりますか? _

各クライアントは、呼び出しごとに非常に一貫しています。

Webサービスコールのシーケンスにより、26784個の異なる時系列の観測結果が得られます。 両方のクライアントは同じ数の結果を取得しますが、値に関連付けられたタイムスタンプが異なります。 1つのクライアントの場合、26784の値はすべて深夜に配置されます。もう1つは、5630個の値(21%)が本来より1時間早くオフセットされます。 特定の日付/時刻のすべての例がオフセットされるわけではありません。たとえば、2010年3月31日のタイムスタンプが必要な992レコードの代わりに、2010年3月30日の午後448があります。

_ リクエストが完全に同一である場合、クライアント側の違いによって実際にどのように説明できるのかわかりません。 _

WCFメッセージトレースに表示されない「帯域外」の通信があるかどうか疑問に思っています。 ワイルドな憶測:「WindowsAuthenticationBasicHttpBinding」を使用しているので、WCFがロケール情報などについてADに問い合わせたかどうか疑問に思っていました。

_ また、クライアントがタイムゾーンを無視しているのはなぜですか _

私たちは故意にタイムゾーンを無視しているのではなく、ただ起こっているようです。 DateTimeプロパティを持つDTOがあり、サーバーからクライアントへのワイヤを介してシリアル化され、再構築されます。 便宜上、サーバー側とクライアント側の両方で同じDTOアセンブリを共有しているので、Date Timeが完全に往復することを(おそらく無意識に)期待しています。

1 Answer


1


地元のITスタッフがなんとか答えを特定できました。

「間違った」情報(午後11時のタイムスタンプ)を表示していたクライアントPCには修正プログラムhttp://www.google.co.nz/search?q=KB981793[KB981793]-タイムゾーンルールの累積パッチがありませんでした。

私はまったく期待していませんでしたが、その修正プログラムをインストールすると、テストしたすべてのマシンで問題が修正されました。