asp.Net設定セッション状態Session実装コード

2668 ワード

以下に詳細を説明します.
 
  
timeout="timeout in minutes"
cookieless="[true|false]"
mode="Off|InProc|StateServer|SQLServer"
stateConnectionString="tcpip=server:port"
stateNetworkTimeout="for network operations with State Server,in seconds"
sqlConnectionString="valid SqlConnection string,minus Initial Catalog"
/>

timeout:アクティビティ終了後のセッションの生存期間を指定します(分単位).ユーザーが指定した時間内にアクティブ化されていない場合、新しいセッションが作成され、以前のステータスはすべて失われます.
cookieless:デフォルトでは、生成されたセッションIDは1つのcookieに格納、その後、このcookieは他のリクエストでASP.NETは、セッションの状態を判断し、現在のユーザに接続するために読み出される.
ブラウザのクッキーを無効にしているユーザーがいる場合は、クッキーlessを使用してセッションステータスを有効にできます.trueに設定場合、ASP.NETは、セッションIDを自動的にURLに追加し、要求されたページに存在する任意の関連URLに追加します.
有効になっていません.falseに設定されています.
有効、trueに設定
このメカニズムでは、ページ内のすべてのリンクがこのセッションIDを含むために書き換えられなければならないため、後で要求されたURLが解析されなければ抽出されず、実際のリソースURL(セッションIDなし)が取得されない処理ステップが追加されます.
mode:ステータスモード.
InProc――これはデフォルト設定です.すべてのステータスは、アプリケーションを実行する同じプロセスのメモリに保存されます.これにより、パフォーマンスを最適化できますが、アプリケーションが再起動されたり、プロセスが何らかの理由で停止されたりすると、関連するユーザーのすべてのセッションデータが失われます.
StateServer――この設定でアプリケーションを実行するプロセスからステータスメモリを分離できます.次の2つのプロパティを組み合わせることができます.
stateConnectionString="tcpip=server:port"stateNetworkTimeout="for network operations with State Server,in seconds"
マシンのアドレスとポートを指定することで、ステータス情報を独自のプロセスとメモリに保存できます.これにより、アプリケーションからステータスを分離し、障害を防止できます.ステータスサーバおよびその中で、ASPを起動する必要がある.NETステータスサービス、このサービスの起動はSerivcesコンソールで行うことも、次のコマンドプロンプトで行うこともできます.
>net start aspnet_state
このサービスを自動起動に設定することもできます.ステータスサーバのIPアドレスを設定することで,対応する機器をアプリケーションのステータス情報を保存するように指定できる.これにより、アプリケーション・サーバの再起動を防止できますが、マシンの再起動を防止することはできません.また、ステータスメモリをアプリケーションプロセスの外に置くと、特にアプリケーションがネットワーク内の別のマシンにある場合、パフォーマンスの競合が発生することに注意してください.セッション情報の保持による競合が正常であるかどうかを明らかにする必要があります.
SQLServer――任意の代価を惜しまずセッション状態を保持することを決定した場合、この設定を利用することができます.このモードでは、すべてのセッション・ステータスをSQL Serverデータベースに保存できるため、アプリケーション、サーバ、さらにはデータベース・サーバ(データベース自体に障害がないと仮定)の失敗した操作を受けることができます.このモードを設定すると、sessionState要素の次のプロパティが設定されます.
sqlConnectionString="valid SqlConnection string,minus Initial Catalog"
ストレージ・ステータスに必要なデータベースを準備するスクリプトも実行する必要があります.シナリオはD:WINDOWSMicrosoft.NET\Framework\v1.1.4322経路下のinstallsqlstate.sqlファイル
このスクリプトを実行するには、SQL Server 2000 Query Analyzer(クエリー・アナライザ)を使用する必要はありません.MSDEはコマンドラインユーティリティ:osqlを提供してくれました.
>osql �CS [servername] �CU [login] �CP [pwd] < InstallSqlState.sql
最大の信頼性を得るために、SQLサーバをグループ化することもできます.このモードはセッションのステータスを保護する最も強力な方法ですが、パフォーマンス上、このモードも最も高価です.各リクエストはデータベース間で往復する必要があり、アプリケーションの応答に深刻な影響を及ぼします.また,ネットワークによる処理も高負荷によりボトルネックとなる.