2009-03-30 1 views
1

この問題の背景は、(静的な)WebMethodでいくつかのユーザーセッションデータを使用する必要があることです。私はそう必要なデータを参照する静的なプロパティを作成しました:ASP.NETページの静的データ - スレッドセーフですか?

private static UserWebSession UserWebSession 
{ 
    get 
    { 
     return (UserWebSession)HttpContext.Current.Session["UserWebSession"]; 
    } 
} 

これは私のページの静的なWebMethodでこれを呼び出すことができます。

私の質問は、このテクニックはスレッドセーフですか?または、このプロパティの値は、新しいページ要求ごとに更新されます。つまり、最後にページを要求したユーザーのUserWebSessionを返します。

答えて

3

これは問題ありません。HttpContext.Currentはこの種のもののために正確に設計されています。あなたは以前のユーザーのセッションを取得しません。

スレッドに依存しています(私はそう信じています)。余分なバックグラウンドスレッドを開始すると、現在のコンテキストを見ることができなくなります。

また、この呼び出しは間違ったコンテキストを取得しないという点で安全ですが、通常の並行処理の警告は、実際にはの場合はコンテキストでとなります。

+0

素晴らしい、ありがとうジョン。注意が必要です。 – MalcomTucker

0

ページメソッドがセッション状態にアクセスできることはわかりません。可能であれば、あなたは大丈夫かもしれません。セッション状態へのアクセスはシリアライズされているため、特定のセッションに対して一度に1つの要求しか到着できないことを思い出しています。

関連する問題