Отвечая на мой собственный вопрос. Кажется, что следующее работает через веб-ферму. Вызовите метод ниже из 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));.

Будет ли это работать? Или я что-то упускаю принципиально?