如何在运行时更改 asp.net 核心中的启动数据?

How can I Change startup data in asp.net core in runtime?

我在启动项目中有一些用于身份设置的代码,例如:

services.Configure<IdentityOptions>(options =>
{
    // Password settings
    options.Password.RequiredDigit = SystemSetting.RequiredDigit;
    options.Password.RequiredLength = SystemSetting.RequireLength;
    options.Password.RequireNonAlphanumeric = SystemSetting.RNA;
    options.Password.RequireUppercase = SystemSetting.RequireUppercase;
    options.Password.RequireLowercase = SystemSetting.RequireLowercase;
    options.Password.RequiredUniqueChars = SystemSetting.RequireUniqueChars;

    // Lockout settings
    options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30);
    options.Lockout.MaxFailedAccessAttempts = SystemSetting.MaxFaildAccessAttempts;
    options.Lockout.AllowedForNewUsers = SystemSetting.AllowedForNewUsers;

    // User settings
    options.User.RequireUniqueEmail = SystemSetting.RequireUniqueEmail;
});

并且 SystemSetting Class 具有此静态 属性:

public class SystemSetting
{
    public static bool RequireDigit {get; set;};
    public static bool RequireLength {get; set;};
    public static bool RNA {get; set;};
    public static bool RequireUppercase {get; set;};
    public static bool RequireLowercase {get; set;};
    public static bool RequireUniqueChars {get; set;};
    public static bool MaxFaildAccessAttempts {get; set;};
    public static bool AllowedForNewUsers {get; set;};
    public static bool RequireUniqueEmail {get; set;};
}

并且这个属性设置在项目的任何地方;

使用此代码,您可以在身份选项中传递动态数据。然后我生成一个系统设置,如果 ApplicationManager 想要更改此默认数据,他可以。

现在!如您所知,当应用程序启动时,启动 运行 永远只有一次。 我如何更改此数据??[在运行时]或如何将数据传递给启动??[在运行时]

好吧,启动方法只有 运行 一次,但如果您真的想在启动时执行此操作,您可以创建一个提供具有更新值的 Options 对象的服务,并在 ConfigureServices 方法中注册该服务,在需要选项的任何地方使用它。然后该服务将在应用程序和配置方法中可用,并通过依赖注入解决。或者您可以使用注入框架来实现相同的目的(例如 Ninject、Autofac 等)。

配置服务documentation