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.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で事前にインストールが必要である。
コメント