2011-09-04 7 views
25

セッションが実際にasp.netでどのように動作しているかを教えてください。 私は私を導いてくださいasp.netでのセッションの仕組みは?

+2

http://www.codeproject.com/Articles/32545/Exploring-Session-in-ASP-NetこのCodeProjectの記事 を読むことをお試しください – kfuglsang

答えて

45

ASP.NETがユーザーを追跡するためにクッキーを使用してセッションの一部で混乱させ、それを簡単に知識にしたいと思います。 ASP.NET_SessionIdのようなクッキーが初めてクライアントに送信されるときに、何かをセッションに書き込もうとすると、このクッキーは、後続の要求でクライアントによって送信されます。このクッキーのおかげで、サーバーはクライアントを識別し、関連セッションデータを書き込み/読み取ることができます。このクッキーは永続的ではなく(ブラウザーを再起動しても存続しません)、クライアントスクリプトがそれにアクセスできないという意味のHttpOnlyというフラグが付けられて発行されます。

クッキーに加えて、非表示のフィールドを使用するようにASP.NETを構成することも、各要求のクエリ文字列にセッションIDを追加することもできます。

ので、セッションの背後にある基本アイデアは、実際のデータはサーバー上のどこかに保存され、サーバがどこにそのデータを見つけるために知ることができるように、クライアントが要求ごとにいくつかのIDを送信していることです。インプロセス

  • デフォルトでは、実際のセッションデータを保存することができる3ヶ所があるセッションは、アプリケーションのメモリ(に格納されているが、最速いますが、サーバー内の複数のサーバがある場合ファームはこれで動作しません)

  • Out-of-Proc:データはState Serviceがインストールされた別のサーバーに保存されます(データは別のマシンのメモリに保存されます。
  • SqlServer:データはSQL Serverに格納されます(セッションデータとして最も低速ですが信頼性が高いですSQL Serverデータベースに保存され、セッション・サーバ・アウト・オブ・PROC)
  • カスタム実装の場合ではありませんがクラッシュした場合serviveできます:ASP.NETあなたの拡張性のおかげで、独自のセッション・プロバイダーや店舗を書くことができあなたが好きな場所にデータを保存できます。

ここでは、ASP.NET Session Stateを調べるMSDNの良い記事があります。

4

セッション:セッションの手段を作成する1.If

[サーバー側に保存されている]、サーバーがセッションデータを格納し、1セッションIDを作成します。 [SessionIDがServerのState Providerに格納されているセッションデータ]

2.サーバーセッションIDをクライアントのブラウザに返します。

3.返されたSessionIDをCookieに格納することができます。

4.Upcoming SessionIDで添付された後続の要求は、サーバーデータにアクセスできます。

注:現在のブラウザのセッションとユーザー固有のセッションのみ。