メモリストレージを使用すると、暗号化キーの問題も発生することがわかりました。短期的には、ASP.NETコアはこれらのキーを使用してセッションなどの機密データを保護します。したがって、それらはプレーンテキストでは保存されません。最初のアプリケーションの実行時にASP.NETがこれらのキーを自動的に生成するように見えます。
それはドッカーコンテナ内で実行される原因は、これは、2つの大きな問題になります:
これは、私が示唆したように、Webサーバーとは別のサーバーで実行されているストレージを使用することで解決できます。私はこのためのMySQLの実装を見つけることができませんでした。 MSSQLと思われるSQLサーバのみ。私はRedisサーバーをインストールして修正しました。それはセッションストレージのために使用されますと暗号化キー。これは、以来、ASP.NETコアの一部のみであることに注意してください、
var redis = ConnectionMultiplexer.Connect($"{redisIpAddress}:{redisPort}");
services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Keys");
AddOptions
前に、RedisのでASP.NETコアのストレージ暗号化キーを聞かせてMicrosoft.AspNetCore.DataProtection.RedisプロバイダをインストールしてConfigureServices
に次の行を追加する
1.1.0リリース。 1.1.0ブランチの他のパッケージに依存しているので、LTS 1.0リリースでは動作していないと思います。この場合、互換性のあるカスタム実装を作成する必要があります。私は私のプロジェクトで1.1.0を使用しているので、私はこれをテストしていません。この記事のその他の情報:
要約すると、私は、RedisがSQLデータベースの代わりにこのためにRedisを使用するのは悪い考えではありません。なぜなら、Redisはキーと値のペアを非常に高速に処理するためです。そして、基盤は、(複雑な)データベースクエリのようなアプリケーションの他の部分をキャッシュするためにRedisを使用することです。これにより、アプリケーションの処理速度が向上し、データベースサーバーの負荷が軽減されます。
https://github.com/aspnet/Caching/tree/dev/srcを参照してください。複数のキャッシュストア(開発用メモリ、運用用のRedis、さらにはSqlServer)があります。もちろん、SqlServerキャッシングが実装されている方法を見て、他のプロバイダのために似ています – Tseng
@ Tseng私はすでにこれを見て、同じ考えを持っていました。しかし、私はこのような実装のために現在時間がないプロジェクトのためにこれを必要とします。 – Lion