首页 > 解决方案 > .NET Core 全局变量未获得初始设置

问题描述

我正在创建一个全局变量,但首先我需要用数据对其进行初始化。该变量似乎正在工作,但是没有设置初始化数据。这是我的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();不存在。我究竟做错了什么?

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

解决方案


在这种情况下,我认为没有必要使用内置选项模式。

此代码不使用它的好处(例如从 appsettings 读取设置)。

您可以在不使用 IOptions 包装器的情况下将 MyOptions 实例注册为单例(如下所示)。

services.AddSingleton(opt);

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

帮助链接


推荐阅读