我想基于驻留在数据库中而不是ASP.NET Core Identity或硬编码值的设置来配置AppSetting.json。因此,我很想在方法ConfigureServices(IServiceCollection services)之外调用以下代码:

services.Configure<IdentityOptions>(x => x.Password.RequireDigit = true);


这种调用方式将允许我在尝试配置DbContext之前初始化Identity

目前,我正在使用services.BuildServiceProvider()中的ConfigureServices()访问数据库值。这种样式对我来说有一个很大的缺点:它对应用程序的DbContext进行了额外的初始化,这很脏而且很慢。另一方面,DbContext被实例化两次而不是一个。

如果能够在services.Configure<IdentityOptions>()之外调用ConfigureServices(),例如在configure()方法中,则可以基于数据库值配置Identity选项,而无需两次初始化DbContext

同样,我的问题是如何在IdentityOptions之外配置ConfigureServices

任何帮助表示赞赏。

最佳答案

我最终将IOptions<IdentityOptions> options注入到Configure()方法中,如下所示:

    public virtual void Configure(IApplicationBuilder app, IOptions<IdentityOptions> options)
    {
      options.Value.Password.RequireDigit = true;
      //rest of configurations...
    }


而且有效!

感谢@Kirk提供的链接。

08-08 03:57