Я немного запутался здесь относительно того, как вводить DataProtection в ConfigureServices(IServiceCollection services)
на основе пользовательских настроек, которые также вводятся с services.Configure<UserSettingsConfig>(Configuration.GetSection("UserSettings"));
.Inject DataProtection на основе введенных пользовательских параметров IOptions <> в ConfigureServices
Значения appName_from_appsettings_json
и dirInfo_from_appsettings_json
ниже должно исходить из нагнетаемой UserSettingsConfig и будет доступен в другом месте, вводя IOptions<UserSettingsConfig>
, но не здесь.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.Configure<UserSettingsConfig>(Configuration.GetSection("UserSettings"));
services.AddMvc();
services.AddScoped<DevOnlyActionFilter>();
services.AddDataProtection()
.SetApplicationName(appName_from_appsettings_json)
.PersistKeysToFileSystem(dirInfo_from_appsettings_json);
}
Я нашел пути для достижения своих целей без использования DI с кодом, как var sharedDataProtectionAppName = configuration.GetValue<string>("UserSettings:SharedDataProtection:ApplicationName");
У меня было чувство, что я нашел решение в этой статье http://andrewlock.net/access-services-inside-options-and-startup-using-configureoptions/ по мне кажется, что я не могу понять, как применить его к моему делу. Мне нужно было бы ввести DataProtection
на основе значений от введенного IOptions<UserSettingsConfig>
. Каким будет самый чистый способ сделать это, на ваш взгляд?
UPDATE: Я нашел решение, основанное на этом типе кода, который я мог бы звонить с ConfigureServices
, но я все же думаю, что это лучший способ.
var userSettingsConfig = services.BuildServiceProvider().GetServices<IOptions<UserSettingsConfig>>().First();
Спасибо, я думаю, это лучше, чем извлечение UserSettings CONFIG от поставщика услуг, как я делаю прямо сейчас ('вар userSettingsConfig = services.BuildServiceProvider(). GetServices>(). Во-первых(); '). –
Daboul
Я попробую завтра. – Daboul
Он работает, без разрешения DI, спасибо. – Daboul