ASP.NET Coreでiisresetでもセッションを維持する件

Redisを使えば大丈夫だと思ったけど、ダメだったので調べたことのメモ

ポイント

- dotnet.exe単体動作ではRedisのみでOK
- iisのバックエンドの場合はiisresetでセッションが吹っ飛ぶ
- セッションidとredisのキーを紐付ける設定がiisの場合、都度変わるぽい

Startup.csのConfigureServices関数にて

var redis = StackExchange.Redis.ConnectionMultiplexer.Connect(Configuration.GetConnectionString("RedisConnection"));
services.AddSingleton(options => redis.GetDatabase());
services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Keys");

的な記述を追加する。
これによって、dotnet core on iis でもiisresetでセッションが飛ばないようになるぽい。

ちなみに、キーとなるAddDataProtection()ミドルウェアだが、

Microsoft.AspNetCore.DataProtection.Redis アセンブリが必要になるため、Nugetで事前にインストールが必要である。


コメント

このブログの人気の投稿

シンボルサーバーを設定する

マルチモニタをやめてみた

Xamarinのxamlのデータバインディングのpart4について訳してみた。