从configurationJson读取配置变量

时间:2019-04-02 10:13:42

标签: c# asp.net .net-core

我正在使用launchSettings.json并最终使用另一个json来放置我的配置变量。

首先,我将从launchSettings.json信息中读取信息,例如暴露端点的地址:port。

然后,我将使用另一个json(appSettings.json)来放置一些配置变量,例如它可以是应用程序的名称或某些连接的规则。

我尝试将IConfiguration添加到单例上下文中,然后将其用于服务中。进入控制器,我无法从json中读取任何内容:

public void ConfigureServices(IServiceCollection services)
{
   services.AddMvc().AddNewtonsoftJson();

   services.AddOpenApiDocument();

   services.AddSingleton<IConfiguration>(Configuration);
}

这是我的服务的构造函数:

public ExampleService(IConfiguration Iconfiguration)
{
   configuration = Iconfiguration;
   configuration.GetValue<string>("port");
}
  

appSettings.json {“地址”:“ 127.0.0.1”,“端口”:8080,

     

“配置”:{

"address": "http://localhost",
"port": 8081   } }

例如,从构造函数或其他方法中,我无法从appSettings.json中获取任何内容

什么是正确的配置?

这是仓库的网址: https://osharkokun.visualstudio.com/_git/Client-Server

谢谢

1 个答案:

答案 0 :(得分:0)

否,您应该在IConfiguration构造函数中获得Startup的实例,例如

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

然后,如果您具有如下定义的配置部分

"portconfig": 
{
"address": "http://localhost",
"port": 8081   
} 

您会看到该配置部分

public void ConfigureServices(IServiceCollection services)
{
   services.Configure<portconfig>(Configuration.GetSection("portconfig"));
}

阅读文档以获取更多信息https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/index?view=aspnetcore-2.2

根据您的评论:您可以使用Configuration属性(如

)读取任何配置
this.Configuration["Your_config_key"]