2011-07-04 8 views
0

HttpContext.Items [typeof(UserProfile)]オブジェクトにアクセスするときにHttpハンドラが呼び出されたときに問題が発生することがあります。ここで、UserProfileはセッションCookieに格納されたオブジェクトですフォーム認証を介して。ASP.NET WebサイトHttpContext.ItemsがHTTPHANDLERでランダムに空です

デプロイされているのと同じマシン上でブラウザを開くか、ビジュアルスタジオでデバッグすると100%の時間がかかりますが、リモートコンピュータからテストすると無作為に失敗します。私はいくつかのトレースを入れて、基本的にHttpContext.Items [typeof(UserProfile)]はセッションCookieが正常に渡されたときでも、Fiddlerによればnullです。

IReadOnlySessionStateをHTTPHandlerに実装しようとしましたが、それでも動作しません。私は時々、3分以上のログイン後、それ以降の時間の100%で動作することがあることを認識しています。

なぜこれが起こっている可能性があり解決策ですか?

Thxを

答えて

0

セッション状態は、フォーム認証とHttpContext.Itemsすべては無関係です - なぜあなたはそれらを混合しているかわかりません。フォーム認証には、セッションCookieとは別の独自のCookieがあり、その存続期間は異なる場合があります。ユーザーが認証されているかどうかにかかわらず、セッション状態を持つことができます。また、セッションクッキー内にオブジェクトUseProfileをどのように格納しているのかもわかりません - コードを記述するようにアドバイスしてください。

HttpContext.Itemsは、それぞれに関連付けられたプロパティバッグですHttpRequest - このコレクションは要求の有効期間のみ利用可能であり、コレクションを保持するための組み込みのメカニズムはありません。だからあなたがあなたのUserProfileオブジェクトをいくつかのモジュールまたはglobal.asaxの各要求に対してそこに置いていない限り、このコレクションのオブジェクトを取得することはほとんどありません。あなたは、おそらくコードサンプルで何をしているのかを説明する必要があります!

+0

私はIReadOnlySessionState cozを使用しています。アイデアがなくなり、Google検索時に表示されました。私が言いましたので、人々はそれで私に答えないでしょう。ユーザープロファイルは、global.asaxのセッションCookie内のチケットから抽出され、HttpContext.Itemsに割り当てられます。しかし、httpハンドラ(デプロイされたサーバ上)ではまだnullのままです。 – Joshscorp

+0

@Titan、セッションクッキーにデータを入れたり取り出したりするコードを投稿できますか?そのセッションクッキーを使用してカスタムデータを保存するのは珍しいことですが、私はむしろ別のクッキーを選択したでしょう! – VinayC

関連する問題