最近のアクセス:
ASP.NET Core でのセッション状態の設定

ここでは、ASP.NET Core で OutProc アプローチを使用してセッション状態を設定する手順を示します。
ASP.NET Core のセッションには次の 2 種類があります: 
  1. InProc (またはインメモリー)

    セッションがインメモリーで、アプリケーションが Web ファーム環境でホストされている場合、スティッキーセッションを使用して各セッションを特定のサーバーに結び付ける必要があります。
     
  2.  OutProc (分散型セッション)

    OutProc セッションはスティッキーセッションを必要とせず、アプリケーションでセッションを使用するのに最も適した方法です。
以下に、SQL Server と Redis を使用して OutProc セッションを設定する手順を示します。

ASP.NET Core で OutProc - SQL Server セッション状態を設定する方法

以前のバージョンの ASP.NET では、SQL Server のセッションストレージを管理するには、テーブルとストアドプロシージャーのセットが必要でした。しかし、ASP.NET Core では、1 つのテーブルのみが必要です。このテーブルは、以下のように「Microsoft.Extensions.Caching.SqlConfig.Tools」ツールを使用して簡単に生成できます: 
1. 以下のコードを使用してツールをインストールします:
dotnet tool install --global dotnet-sql-cache
2.次に、必要なテーブルを生成します:
dotnet sql-cache create <接続文字列>  <スキーマ>  <テーブル名> 
例:
dotnet sql-cache create "Data Source=.\sqlexpress2019,1433;Initial Catalog=SessionDatabase;User=test;Password=test;" dbo SessionData

dotnet sql-cache create "Data Source=.\sqlexpress2019;Initial Catalog=SessionDatabase;Integrated Security=True;" dbo SessionData
3.最後に、 [ 設定 ] > [ バックエンド ] に移動し、ジェネレーターを選択し、以下を設定します:

Web サーバーにインターネット インフォメーション サーバー (IIS) を使用する場合、アプリケーションプールで設定されているユーザーに、レジストリへのアクセスに必要なアクセス許可があることを確認します。たとえば、ローカル システム ユーザーには既定でアクセス許可があります。これはデータ保護キーの維持に必要です。アクセス許可がなかった場合、IIS でホストされている Web サイトへのアクセス後、web\logs\*.log ファイルに次のような警告が出力されます:
warn: Microsoft.AspNetCore.DataProtection.Repositories.EphemeralXmlRepository [ 50 ] 
      Using an in-memory repository.Keys will not be persisted to storage.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [ 59 ] 
      Neither user profile nor HKLM registry available.Using an ephemeral key repository.Protected data will be unavailable when application exits.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [ 35 ] 
      No XML encryptor configured.Key {b2577f9d-c6bc-4920-b1ca-84804c9ff0c4} may be persisted to storage in unencrypted form.
正常に機能した場合は、Web アプリケーションの最初のページへのアクセス後に web\logs\*.log ファイルに次のようなメッセージが出力されます:
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [ 63 ] 
      User profile is available.Using 'C:\Windows\system32\config\systemprofile\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
機能するかどうかをテストするには、セッション変数を設定します:
 &WebSession.Set('mykey','myvalue')
そして、aspnet プロセスのリサイクル後に同じセッション値を取得します:
if (&WebSession.Get('mykey') = 'myvalue')
 msg("Session persisted")
endif
前に設定した値と同じ値が返されるはずです。

ASP.NET Core での OutProc - Redis セッション状態の設定

Redis (ドキュメント) は、分散型キャッシュとして使用されているオープンソースのメモリー内データストアです。ローカルでインストールし、設定することができます。また、Azure Redis キャッシュを設定することもできます。
Redis を Windows 上に置くには、https://github.com/microsoftarchive/redis/releases から Redis サーバーをインストールします:
1.Redis サーバーをインストールしたら、起動します:
redis-server.exe
2.Redis を ASP.NET Core でセッション状態として使用するには、 [ 設定 ] > [ バックエンド ] に移動し、ジェネレーターを選択し、以下を設定する必要があります:

参考情報

.NET ジェネレーターのトラブルシューティング


サブページ
Created: 23/04/24 18:11 by Admin Last update: 24/04/10 18:40 by Admin
カテゴリ
Powered by GXwiki 3.0