读取appsettings.json-字段保持为空

Fal*_*con 4 c# asp.net json asp.net-core

认为我的startup.cs有问题,因为我没有从我那里得到任何值 <IOption> config

所以..我们有我们的appsettings.json

"Config": {
    "ApplicationName": "some name",
    "ConnectionString": "someconstring",
    "Version": "1.0.0"
  },
Run Code Online (Sandbox Code Playgroud)

在这里,我们有我们的模型

public class Config
    {   
        public string ApplicationName { get; set; }
        public string ConnectionString { get; set; }
        public string Version { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

startup.cs

 public Startup(IConfiguration configuration)

    {
        Configuration = configuration;
    }



public static IConfiguration Configuration { get; set; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        // Add functionality to inject IOptions<T>
        services.AddOptions();

        // Add our Config object so it can be injected
        services.Configure<Config>(Configuration);
    }
Run Code Online (Sandbox Code Playgroud)

然后在我们的控制器中,我尝试加载那些数据,但是不幸的是,它们仍然为空。

   private IOptions<Config> config;
            public CompaniesController(IOptions<Config> config)
            {
                this.config = config;
            }
Run Code Online (Sandbox Code Playgroud)

我试图用类似的东西更改startup.cs

 services.Configure<Config>(options =>
            {
                options.ConnectionString = Configuration.GetSection("Config:ConnectionString").Value;
            });
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

我一直在使用的资源

https://dzone.com/articles/dynamic-connection-string-in-net-core

/sf/ask/2201744681/

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-2.2
Run Code Online (Sandbox Code Playgroud)

但是很显然,我在这里缺少关键点。

编辑:我正在使用ASP.Net Core 2.0

在此处输入图片说明

编辑2:

Program.cs中

public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
Run Code Online (Sandbox Code Playgroud)

整个Appsettings.json文件

{
  "Config": {
    "ApplicationName": "somename",
    "ConnectionString": "someconstring",
    "Version": "1.0.0"
  },
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Warning"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑3:在我的前端应用程序中,我像这样导入API。 在此处输入图片说明

Kir*_*kin 5

services.Configure<Config>(Configuration);

由于您要查找的JSON属性嵌套在文件中的Config属性下,因此此行无法达到预期的效果appsettings.json。为了加载这些值,你需要使用GetSection抓取Config部分,并通过进入Configure<TOptions>方法:

services.Configure<Config>(Configuration.GetSection("Config"));
Run Code Online (Sandbox Code Playgroud)