さて、頭に浮かぶ4つのセッションタイプがあります:
(1) インプロセスモード
このモードでは、セッション状態は現在のプロセスに保存され、このプロセスが終了すると、セッション状態に保存されたデータも失われます。このモードは、ASP.NET ではデフォルトで設定されています。以下に、web.config ファイルでそのような状態を構成する例を示します。
<configuration> <sessionstate mode="inproc" cookieless="false" timeout="30" sqlconnectionstring="data source=127.0.0.1;user id=user;password=pass" server="127.0.0.1" port="42424" />
このセッション状態の最も重要なパラメーターは次のとおりです。
- モード - このパラメーターには、inproc、sqlserver、stateserver の 3 つの値があります。この例の値 inproc は、セッション状態がインプロセス モードであることを示します。
- cookieless - このパラメーターのブール値は、セッション状態が機能するために Cookie が必要かどうかを示します
- タイムアウト - セッションが有効な時間を示します。ユーザーがアプリケーションと対話するたびに、タイムアウトは現在の時刻とタイムアウトの値に設定されます
このモードの最大の利点はパフォーマンスです。プロセス間のデータ転送がないため、大幅に高速化されます。
(2) アウトプロセスモード
このモードでは、セッションは別のプロセスに保存されるため、他のプロセスを終了してもセッション状態は維持されます。これは、アウト プロセス モードの web.config でのセッション状態のサンプル構成です。
<configuration> <sessionstate mode="stateserver" cookieless="false" timeout="30" sqlconnectionstring="data source=127.0.0.1;user id=user;password=pass" server="127.0.0.1" port="42424" />
その下に、アウトプロセス モードでのセッション状態のパラメーターが表示されます。
- mode - stateserver に設定された値は、アウトプロセス モードで動作することを示します
- service - 状態サービスがあるサーバーを示します。この例では、localhost です。
- port - ポート オブ ステート サービスを示します
前に述べたように、このモードの利点は、プロセスでセッション状態を失わないことですが、インプロセス モードよりもパフォーマンスが低下します。
(3) SQL Server モード
SQL サーバー モードでは、セッション状態は SQL サーバーに保存されます。構成するには、次のコードを web.config ファイルに追加する必要があります。
<configuration> <sessionstate mode="sqlserver" cookieless="false" timeout="30" sqlconnectionstring="data source=server_name;user id=user;password=pass" server="127.0.0.1" port="42424" />
このモードで最も重要なパラメータは次のとおりです。
- mode - sqlserver 値に設定すると、セッション状態が SQL サーバー モードで機能する必要があることを示します
- sqlconnectionstring - サーバーの名前、SQL サーバーのユーザー名とパスワードを含む文字列が含まれています。
このモードの最大の利点は、セッション状態を失わないという信頼性ですが、欠点は、以前のモードよりも遅いことです。
(4) クッキーレス
このモードでは、クライアントのブラウザで Cookie を有効にする必要はありません。このモードは、セッションを識別する ID で URL アドレスを変更することによって機能します。構成は次のとおりです。
<configuration> <sessionstate mode="stateserver" cookieless="true" timeout="30" sqlconnectionstring="data source=127.0.0.1;user id=user;password=pass" server="127.0.0.1" port="42424" />
このモードに不可欠なパラメーターは「cookieless」です。この例では true に設定されています。これは、状態を維持するために Cookie が必要ないことを意味します。このソリューションの利点はすでにご存じでしょう。Cookie は必要ありません。
提案:
何らかの理由でセッション値が失われている場合は、(2) アウトプロセス モードまたは (3) SQL Server モードを試してください。どちらのモードも、セッションの存続期間をより長く、永続的にするという利点があります。これらは通常、ユーザーの訪問中にセッションを維持する必要がある大規模な本番サイトで使用されます。前述の唯一の欠点はパフォーマンスです。小規模から中規模のアプリの場合、これはアプリケーションに大きな影響を与えません。
これで失われたセッションが元に戻ることはありませんが、セッションを維持するのに役立ちます。これが少なくとも少し役に立てば幸いです。