我们可以在Web.Config中配置程序使用的Session存储方式.默认情况下是InProc, 即保存在IIS进程中. 关于Off, InProc和Customer本文不做讲解. 相关文章大家都可以在网上搜索到.
下面主要讲解 StateServer 和 SQLServer 的应用.
コードは次のとおりです: mode="SQLServer" sqlConnectionString="server=192.168.9.151; uid=sa;"
カスタムのデータベース名を使用する場合また、allowCustomSqlDatabase 属性を指定し、データベース接続文字列でデータベースを指定する必要があります:
コードをコピーします
コードは次のとおりです: mode="SQLServer"allowCustomSqlDatabase=" true"
s qlConnectionString= "server=192.168.9.151;pwd=123456;"
(1) StateServer モード:
1。 Web ファームに同じ があることを確認してください。
2. セッションに保存されるオブジェクトはシリアル化可能です。
3. Web ファーム内の異なる Web サーバーでセッション状態を維持するには、IIS メタベースの Web サイト アプリケーション パス (LMW3SVC2 など) がすべてのサーバーで一貫している必要があります (大文字と小文字が区別されます)。 Machine.Config で構成された HttpModuel モジュール。.NET インストール ディレクトリの Config フォルダーで Web.Config を表示します (バージョン 1.1 は Machine.Config にあります):
コードをコピーします コードは次のとおりです:
モジュールが存在します。5. StateServer は負荷分散をサポートしていないため、同時実行性が高い場合は、SqlServer の高いパフォーマンスとセキュリティを享受できるように、SqlServer モードを使用することをお勧めします。ただし、ストレージ効率は低下します。
6. .Config の Machine Configuration で、コードをコピーします。
validationKey="123456789012345678901234567890AAAAAAAAAA" decryptionKey="12 3456789012345678901234567890123456789012345678" validation="SHA1" decryption="自動" /> validationKey="1234567890123456789012345678" 9012345678 90AAAAAAAAA"
復号化キー= = "123456789012345678901234567890123456789012345678"
検証 = "SHA1"
復号化 = "自動"
/>
(3)セッション:
1.セッションサーバーを介してASP.NETとASPの間でセッションを直接共有することはできません:
http://msdn.microsoft.com/zh-cn/ library/aa479313.aspx
2. セッションは、Web サイトの異なるアプリケーションまたは仮想ディレクトリ間で共有できません
3. セッションの有効期限はスライド時間です。
4. セッションは、.NET に付属する値の型を保存します。最高のパフォーマンス 優れています。オブジェクトを保存するとパフォーマンスが低下します。
(4)SessionID:
1.SessionID は URL に保存することもできます。Web.Config ファイルの System.Web/sessionState ノードの Cookiesless 属性を設定するだけです。
コードをコピーします コードは次のとおりです:
アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト「s」から「s」を「」から「s」から - から - - - - - - - - - - - - - - - - - - - - - - - - - セッションIDはユーザーのブラウザに保存されます。
3. ブラウザを閉じて再度アクセスすると、セッション ID が異なります。
4. IE6 ウィンドウを開くたびに、セッション ID が異なります。 IE6 で共有されます。
5. FireFox タブ ページと新しい FireFox ウィンドウのセッション ID は同じですが、フレームセット ページを含むセッションは
で共有できます。
コードをコピーします
コードは次のとおりです: < Frame src="SessionID.aspx">
サフィックスが .htm で、.htm ファイルが渡されない場合ASP.NET ISAPI 処理後、サーバーの速度に応じて各フレーム ページに異なるセッション ID が生成され、更新後は最後のセッション ID と等しくなります。解決策は、.htm サフィックスを .aspx に変更するか、 .htm ファイルを ASP に転送します。
(5) Session_End イベント:
1. Session_End は InProc モードでのみ使用できます。
2. ブラウザを閉じると、Session_End はトリガーされません。 HTTP はステートレス プロトコルであるため、サーバーはブラウザが閉じられたかどうかを知る方法がありません。
3. Session_End は、セッションが期限切れになるか、Session.Abandon を呼び出した場合にのみトリガーされます。Session.Clear() はデータをクリアするだけで、セッションは削除されません。
4. Session_End はバックグラウンド スレッドによってトリガーされ、ワーカー プロセス アカウントを使用して実行されます。そのため、プログラムは、Session_End を使用してデータベースにアクセスするときに、許可の問題を考慮する必要があります。ワーカー プロセス (aspnet_wp.exe) これは、machine.config で指定できるアカウントで実行されます。したがって、Session_End では、整合性セキュリティを使用して SQL に接続すると、接続にワーカー プロセス アカウント ID が使用され、ログイン失敗が発生する可能性があります。6. Session_End は独立したスレッドによって開始されるため、HttpContext オブジェクトは使用できません。 Session_End (Request、Response、Server などのオブジェクトはすべて HttpContext 内にあります)、つまり、Response.Redirect や Server.Transfer などのメソッドは使用できません。
VII. 概要
私は SqlServer モードを使用して社内の複数のサーバーのセッション共有を実装しましたが、サーバーを再起動してもユーザーの予約プロセスは再開されません (予約プロセスに必要なセッションは失われません)。 ) この記事が特定のセッション サーバーのビルダーに役立つことを願っています
。
http://www.bkjia.com/PHPjc/327659.htmlwww.bkjia.com
truehttp://www.bkjia.com/PHPjc/327659.html
技術記事 1. まとめ すべての Web プログラムはセッションを使用してデータを保存します。独立したセッション サーバーを使用すると、負荷分散シナリオにおけるセッション共有の問題を解決できます。...