2009-07-10 5 views
6

私はそれが簡単な質問だと知っていますが、Googleのノイズからそれを引きずることはできません。 .NETはセッション状態サービスまたはSQLデータベースを使用してセッション状態を戻すことができますが、ASPがそれを格納するためのアウトプロセスオプションを提供しているかどうかはわかりません。負荷分散されたサーバーがオフラインになったときにASPアプリケーションでセッション変数を失うことがありますか?古典的なASPがセッション状態を保存できる唯一の方法はインプロセスですか?

答えて

4

メモリであり、唯一のネイティブのASPセッションMSDN Full Article

ASPの実装

からメモリ

でできる唯一の店舗セッションデータを。セッションデータをSQL Serverに格納するために、カスタムMicrosoft®VisualBasic®6.0 COMオブジェクトが作成され、ネイティブセッションオブジェクトを使用する代わりにセッション状態を管理します。このCOMオブジェクトは、各Web要求の開始時にインスタンス化され、SQL Serverからセッションデータをリロードします。 ASPスクリプトが終了すると、このオブジェクトは終了し、セッション状態はSQL Serverに保持されます。

Visual Basic 6 COMセッションオブジェクトの主な目的は、Microsoft®Internet Information Serverの組み込みオブジェクトへのアクセスを提供することです。 Visual Basic 6.0 COMセッションオブジェクトは、SessionUtilityアセンブリのmySessionクラスを使用してセッション状態を保持し、SessionUtilityのSessionPersistenceクラスはSQL Serverでセッションデータをロードして保存します。 mySessionクラスとSessionPersistenceクラスは、regasm.exeユーティリティを使用してCOMオブジェクトとして公開されます。 regasm.exeユーティリティは、COMクライアントがFrameworkクラスを使用するためのタイプライブラリを登録および作成できます。

セッション状態情報は、オブジェクトの構築時に再ロードされます。コンストラクター(class_initialize)は、まずApplicationクッキー、セッションタイムアウト(SessionTimeOut)、およびデータベース接続文字列(SessionDSN)をApplicationオブジェクトから取得し、セッションデータを保持するクラスmySessionのインスタンスを作成します。コンストラクタは、指定されたCookieを使用してSQL Serverからセッションデータを再読み込みしようとします。 SQL Serverにセッション情報がない場合、またはセッションが期限切れになっている場合は、新しいCookieが発行されます。 SQL Serverがセッション状態データを返した場合、セッション状態はmySessionオブジェクトに格納されます。

+0

優れた検索、多くの感謝! – Chris

+0

COMオブジェクトがVisual Basic 6.0で記述される必要がある理由がわからない場合は、結果がASPで使用されるスクリプト言語によって呼び出されるCOMオブジェクトであれば、どの言語でも構いません。 – AnthonyWJones

4

他には何も組み込まれていませんが、ASP Classicでは独自のセッション管理システムを構築するのはかなり簡単です。最も単純な形式は、以下のようなDBのテーブルである:

セッションID int型PK、 フィールドテキスト、 値テキスト、 は日時

がフィールドおよび値のCSVエンコーダ/デコーダの何らかの思い付く期限切れすべてのページにコレクションを作成します。その後、ページが実行され、有効期限が更新されたら保存します。次に、クッキーにセッションIDを記録してもらうか、クエリ文字列の中でそれを渡してください。

関連する問題