セッションはサーバー上で維持されますが、はクライアント経由でと追跡されます。私はクライアントを介して繰り返す。
ほとんどの場合、セッションはCookieで追跡されます。したがって、あなたの例を使用して、ユーザーオブジェクトがセッションに保存されるとき:
Session["UserInfo"] = new User { FirstName = "Joe", LastName = "Bloggs" };
クッキーは一意の識別子でクライアントに送信されます。このクッキーは、期限切れになるまで、このクライアント/ブラウザーからのすべてのHTTP要求に渡されます。
初めて(別のマシンから)別のユーザーが来た場合、Session["UserInfo"]
はnullになります。
Cookieの代わりに「cookieless-session」があります。セッションIDを保存するためにクッキーを使用する代わりに、識別子がURLに追加されます。
答えはありません。他のWebページ(他のクライアント/マシン/ブラウザなど)はこの情報にアクセスできません。
Webサーバーからの異なるクライアント間で情報を共有する場合は、キャッシュを使用してください。
質問の文脈(ユーザー情報)が与えられている場合、特定のユーザーにのみ関連するので(共有しないでください)、この情報をセッションに保存することは有効です。
セッションでユーザー情報を固執する代わりに、多くの人が使用する代替方法は、フォーム認証チケットに添付される一般的な原則に入れることです。
あなたが選んだ道路まで。
OKをセッションの周りに頭を得るのを助ける必要があり、そうであれば上私のページ私はセッションを介して私のユーザーオブジェクトを取得し、自分のページレベルのユーザー変数を設定します。ページ・レベルの変数を介してユーザー・オブジェクトを更新すると、セッション・ユーザー・オブジェクトが自動的に更新されますか? – Bobbo
はい。アプリケーションがサーバファームで実行されている場合を除き、セッションデータはサーバメモリ(inproc)に保持されているオブジェクトに過ぎません。 ASP.NETは、どのクライアントからの要求がIDから来ているのかを把握し、そのIDを使用して正しいセッション辞書が要求を処理するコードであることを確認しますが、辞書を変更しません。あなたが行ったすべての変更、またはそれが指し示すオブジェクトの変更は持続します。 – Mud