ASP.NETセッション状態プロバイダーのプロパティ
ASP.NETセッションの保存 NCache プログラミングは必要ありません。 NCache ASP.NET セッション状態プロバイダーはカスタムです SessionStateStoreProviderBase
ASP.NET アプリケーションの実装。アプリケーションで ASP.NET セッションを構成して取得するには、次の変更が必要です。
Note
この機能は以下でも利用できます NCache Professional.
ASP.NET セッション状態の前提条件
- に基づいて、アプリケーションに次の NuGet パッケージをインストールします。 NCache バージョン:
- エンタープライズ: AspNet.SessionState。NCache
- プロフェッショナル: AspNet.SessionState。NCache。プロ
- オープンソース: AspNet.SessionState。NCache。オープンソース
- キャッシュが実行されている必要があります。
asp.netセッション状態タグを変更する
アプリケーションを編集します Web.config ファイルを作成して変更します <sessionState>
以下に示すセクション。
<configuration>
...
<sessionState cookieless="false"
regenerateExpiredSessionId="true"
mode="Custom"
customProvider="NCacheSessionProvider"
timeout="20">
<providers>
<add name="NCacheSessionProvider"
type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"
cacheName="demoCache"
sessionAppId="demoApp"
useInProc="false"
enableLogs="false"
exceptionsEnabled="true"
writeExceptionsToEventLog="false"
AsyncSession="false"
useJsonSerialization="false"
enableLogs="false"
enableSessionLocking="true"
sessionLockingRetry="-1"
emptySessionWhenLocked="false" />
</providers>
</sessionState>
...
</configuration>
WebファームのMachineKeyタグを変更する
Web ファームの場合は、 <machineKey>
下のエントリ <system.web>
セクション。 すべてのノードで同じ方法で ASP.NET セッション ID を生成する必要があります。
Webファームのマシンキーを生成する方法について説明します。
Webファームのマシンキーを生成する(IIS 7)
<machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"
decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/>
セッションオブジェクトのシリアル化
使い始める前に NCache ASP.NET セッション オブジェクトを保存および取得するには、これらのオブジェクトをキャッシュ内に直接保存できないことを知っておく必要があります。 これらのセッション オブジェクトをキャッシュ内に保存するには、最初にそれらをシリアル化する必要があります。 セッション オブジェクトをシリアル化するために採用できるさまざまな方法があります。 これらの方法は次のとおりです。
バイナリ シリアル化
アプリケーションのソース コードにアクセスできる場合は、このシリアル化方法を使用できます。 この場合、すべてのオブジェクト (キャッシュ内に保存したいオブジェクト) をシリアル化可能としてマークする必要があります。
Note
ただし、このメソッドは .NET 6.0 の時点で廃止されており、ASP.NET アプリケーション内でバイナリ シリアル化またはコンパクト シリアル化を使用すると、それに応じてユーザーに通知する例外がスローされます。
NCache コンパクトなシリアル化
バイナリシリアル化を使用できない、または使用したくない場合は、次を使用できます。 NCache コンパクトなシリアル化 セッションオブジェクトをシリアル化します。 これは高速であり、ソース コードを変更するのではなく、構成ファイルを変更するだけで済みます。
この方法の唯一の問題は、シリアル化するクラスの数が多い場合、構成の変更が大規模になる可能性があることです。
JSONシリアル化
上記のシリアル化手法のいずれでも機能しない場合は、代わりに JSON シリアル化を選択できます。 この方法の最も良い点は、ファイルに XNUMX つの変更を加えるだけで済むため、非常に高速かつシンプルであることです。 web.config ファイルを作成し、残りのジョブは次のように実行されます。 NCache 実行時に自動的に。
の値を設定するだけです usejsonserialization
True としてフラグを立てます。 デフォルトでは、このフラグの値は False です。
セッションデータを取得する
NCache クラスタ化されたキャッシュに保存されているすべてのセッション データを、 NCache セッション状態モジュール。 すべてのセッション データは、タグ付きのタグ付きキャッシュ アイテムとして指定されたキャッシュに追加されます。 NC_ASP.net_session_data
.
以前に保存されたセッション データを取得するには、次の方法でデータをフェッチできます。 GetByTag
セッション ID と関連するセッション データがキャッシュに格納されたディクショナリを返します。
var allSessionData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_session_data"));
SessionStateプロパティ
以下に、上で指定したさまざまなキーと値のペアについて説明します。
メンバー | 説明 |
---|---|
sessionAppId |
これはオプションです string 複数のアプリケーションが同じキャッシュを使用している場合にセッション ID が一意であることを確認するための識別子を指定する属性。 アプリケーション ID は、Web ファーム内のアプリケーションで同じである必要があります。 アプリ ID が指定されていない場合、セッション ID には何も連結されません。 |
cacheName |
これは必須です String キャッシュ セッションに使用されるキャッシュの名前を指定する属性。 キャッシュ名が指定されていない場合、構成例外がスローされます。 |
enableSessionLocking |
オプション Boolean 属性。 このフラグが設定されている場合、 NCache セッション ストア プロバイダーは、複数の同時リクエストが行われたセッション ストア アイテムを排他的にロックします。 デフォルトは False です。 |
sessionLockingRetry |
これはオプションです Integer 属性。 もしも enableSessionLocking が True で、この整数が 0 以上であれば、 NCache セッションストアプロバイダーは、後に空のセッションを返します sessionLockingRetry 、ロックを取得するための再試行回数を指定します。 デフォルト値は -1 です。 |
writeExceptionsToEventLog |
オプション Boolean 属性。 このフラグが設定されている場合、キャッシュ API からのすべての例外がイベント ログに書き込まれます。 デフォルトは False です。 |
enableLogs |
これはオプションです Boolean 属性。 このフラグが設定されている場合、ストア プロバイダーはすべてのエラー情報をログに記録します。 ログ ファイルは次の場所に作成されます。 %NCHOME%\log-files\SessionStoreProvider (Windows)または /opt/ncache/log-files/SessionStoreProvider (Linux)。 デフォルトは False です。 |
enableDetailLogs |
オプション Boolean 属性。 このフラグが設定されている場合、ストア プロバイダーはすべてのデバッグ情報をログに記録します。 ログ ファイルは次の場所に作成されます。 %NCHOME%\log-files\SessionStoreProvider (Windows)または /opt/ncache/log-files/SessionStoreProvider (Linux)。 デフォルトは False です。 |
exceptionsEnabled |
これはオプションです Boolean キャッシュ API からの例外がページ出力に伝播されるかどうかを指定する属性。 このフラグを True に設定すると、例外によって失敗の具体的な原因に関する詳細情報が得られるため、アプリケーションの開発段階で特に役立ちます。 デフォルトは False です。 |
operationRetry |
操作の実行中にサーバーとの接続が失われた場合に、サーバーが操作を再試行する回数を指定します。 そのデフォルト値は次のとおりです 0 (ゼロ)。 |
operationRetryInterval |
サーバーとの接続が失われた場合に備えて、各操作を再試行する間隔を指定します。 そのデフォルト値は次のとおりです 0 (ゼロ)。 |
usejsonserialization |
これはブール属性です。 ASP.NET セッション オブジェクトに JSON シリアル化を使用する場合は、この属性の値を True に設定します。 デフォルトでは、この属性の値は False です。 |
も参照してください
。ネット: Alachisoft.NCache.Web.SessionState 名前空間