ASP.NetSession使用

2144 ワード

セシオンの原理
1、sessionはどのように保存して、抽出したのですか?
(1)サーバ側にはセッションプールがあり,各クライアント(あるいはブラウザインスタンス)に対して「人手1部」であり,ユーザが初めてWebサーバと接続を確立すると,サーバはユーザにセッションIDを識別として配布する.SessionIDは24文字のランダム文字列です.ユーザがページをコミットするたびに、ブラウザはこのSessionIDをHTTPヘッダに含めてWebサーバにコミットする.これにより、Webサーバは現在要求されているページがどのクライアントであるかを区別することができ、このSessionIDはクッキー方式でクライアントのメモリに保存されており、Sessionプールのデータを取得したい場合、サーバはクライアントがコミットした唯一のSessionID ID IDに基づいて対応するデータを返す.
(2)SessionとCookieの最大の違いは,Cookie情報はすべてクライアントに格納され,Sessionはクライアントをサービス側と検証するためのタグとして1つのIDを格納するだけで,真のデータはサービス側のメモリに格納されることである.
 
2、Sessionプールの各クライアントのデータはどのように保存されていますか?
(1)Sessionプールに格納されているデータはグローバルなデータであり、ページ間でアクセス可能であり、各SessionIDには一意のデータのみが格納されている.例えば、まずsession["userName"="admin"と設定し、セッションが終了していないsessionが期限切れになっていない場合、session["userName"="123";このセッションIDは変更されていませんが、セッションプールのデータは上書きされます.このときsession[「userName」]の値は「123」であり、他の値ではありません.
(2)セッションプール内のデータはプロセス間でアクセスできない.たとえば、loginを開きます.aspxページはsession["userName"]="admin";その後、loginページは閉じません.つまり、このセッションは終了しません.これは別のブラウザでloginを開くことです.aspxページではセッション["userName"]=null
(3)アカウントのパスワードを入力し、ログインページをクリックして「admin---クリックログイン」を出力し、次にクリックしてセッションの取得ボタンをクリックすると、ページは「admin---クリックしてセッションを取得」のみを出力し、ページが閉じずに別のブラウザを開き、セッションの取得ボタンをクリックすると、ページは対応しません.
 
3丶sessionの宣言サイクルと破棄
(1)session格納データ計時はスクロール計時方式である.具体的には、書き込みセッションを開くと、書き込みからこのページがコミットされていない場合、デフォルト時間は20分で、20分後にセッションはサーバによって自動的に破棄されます.コミット操作があると、サーバはコミット後からこのようなプッシュを再カウントし、設定時間内に破棄されます.
(2)セッションの破棄時間を設定できます.
Session.Timeoutの値範囲は1-1440 Serverである.scriptTimeoutの値範囲0-2174483647
 
4丶セッションのストレージポリシー
Asp.Netでは、Sessionのストレージポリシーはいくつかあります.
 
デフォルトでは、システムはInProcモード、すなわちプロセス内モードを採用しています.この場合、SessionはAspに保存する.Netワークプロセスがマッピングするメモリの中で、問題はAspです.Netワークフローは、平均的なパフォーマンスを維持するために、システムによって頻繁に回収されます.IISでは、アプリケーション・プールの回収パラメータを構成するインタフェースのように、時間サイクルで回収したり、メモリがどれだけの値に達したときに自動的に回収したりする自動回収を構成できます.
Asp.Netワークプロセスが回収されると、マッピングされたメモリはすべて空になり、初期化され、他のプログラムが使用できるようになるため、Sessionも一緒に消えてしまいます.これが、なぜSesssionが理由もなく消えたのかという主な原因です.
 
Recycling->Regular Time Intervalを0に設定(アプリケーションプールの定期自動回収を無効にする).