Отвечая на мой собственный вопрос. Кажется, что следующее работает через веб-ферму. Вызовите метод ниже из Startup.ConfigureServices. Предполагается, что ключ (который был сгенерирован на компьютере разработчика) находится в папке Keys в корневом каталоге проекта.
емного неясно, как работают ключи защиты данных в среде веб-фермы. У меня нет общего расположения, которое могут использовать все серверы (и я не хочу иметь дело с разрешениями). Поэтому я хотел бы сгенерировать ключ и распространить его вместе с веб-приложением.
Я делаю следующее, но не уверен, что это правильно. Таким образом, я генерирую файл ключа локально на моем компьютере с помощью:
var specialFolder = Environment.SpecialFolder.CommonApplicationData;
var appDataPath = Path.Combine(
Environment.GetFolderPath(specialFolder),
"company",
"product"
);
services.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(appDataPath));
Это создаетkey-some-guid.xml
файл. Затем я распространяю этот файл с моим веб-приложением.
Теперь, когда я запускаю свое веб-приложение, в службах Startup.Configure скопируйте этот файл вappDataPath
местоположение (определено выше) и вызовservices.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(appDataPath));
.
Будет ли это работать? Или я что-то упускаю принципиально?