.NET Core全局变量未获取初始设置

时间:2019-07-11 16:10:15

标签: .net-core asp.net-core-mvc

我正在创建一个全局变量,但首先需要使用数据对其进行初始化。该变量似乎正在运行,但是未设置初始化数据。这是我的ConfigureServices

public void ConfigureServices(IServiceCollection services)
{
    services.AddOptions();
    //Gets data for the Global variable
    MyOptions opt = SetValues();
    Action<MyOptions> options = (set => set = opt);
    services.Configure(options);
    services.Configure<MyOptions>(options);
    services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<MyOptions>>().Value);
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

然后在不同的控制器中,我这样称呼它;

public ValuesController(IOptions<MyOptions> options)
{
    Options = settings.Value;
}

在测试中,控制器可以更改Options中的属性,但是,在MyOptions opt = SetValues();中完成的设置不存在。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

在这种情况下,我认为使用内置选项模式不是必需的。

此代码没有利用它的好处(例如,从appsettings中读取设置)。

您可以将MyOptions实例注册为Singleton而不使用IOptions包装器(如下所示)。

services.AddSingleton(opt);

使用此功能的更好方法是将设置中的选项放入 appsetting.json

Help link