Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration.GetSection在.net核心(3.1)中返回null_.net_Asp.net Core_Configuration - Fatal编程技术网

Configuration.GetSection在.net核心(3.1)中返回null

Configuration.GetSection在.net核心(3.1)中返回null,.net,asp.net-core,configuration,.net,Asp.net Core,Configuration,我正在尝试使用“Configuation.GetSection”获取appSettings.json文件中的信息。但不知何故,我无法得到这个 这是密码 appSettings.Development.json: { "test": { "a": "sdfs" } startup.cs var test = Configuration.GetSection("test"); 我需要运行什么来从appsettings.json文件获取信息 请帮忙。提前感谢请确保配置正确 ap

我正在尝试使用“Configuation.GetSection”获取appSettings.json文件中的信息。但不知何故,我无法得到这个

这是密码

appSettings.Development.json:

{
    "test": {
    "a": "sdfs"
}
startup.cs

var test = Configuration.GetSection("test");
我需要运行什么来从appsettings.json文件获取信息


请帮忙。提前感谢

请确保配置正确

appsettings.json

{
  ...
  "Test": {
    "Key": "Value" 
  }
}
Startup.cs

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


    ...

    string v = Configuration["Test:Key:Value"];

    ...
}
方法返回具有指定子节键的配置子节,它返回指定的ConfigurationSection对象。您可以使用以下方法获取数据:

1.从配置对象获取节。在这个部分中,我们得到了另一个包含该值的部分

var test = Configuration.GetSection("Test").GetSection("a").Value;
2.直接从配置对象获取字符串类型值。我们用“:”分隔嵌套部分

string dbConn2 = Configuration.GetValue<string>("Test:a");
string dbConn2=Configuration.GetValue(“Test:a”);
参考:


我想我找到了上述问题的答案。我不确定我是否正确

我想从“apSettings.json”文件中获取设置并创建一个对象,然后将其与DI一起使用到我的控制器中

为此,我现在用这种方式

内部配置服务方法:

public void ConfigureServices(IServiceCollection services)
    {
        AppSettings _settings = new AppSettings();
        services.AddControllersWithViews();
        Configuration.GetSection("AppSettings").Bind(_settings);// bind is necessary
        services.AddSingleton(_settings);
    }
(注意:AppSettings是自定义类,其属性将在AppSettings.json中提及)

备选案文2: 这是从“appsettings.json”获取信息的第二个选项

services.AddSingleton(Configuration.GetSection(“AppSettings”).Get();

我还面临一个类似的问题,IConfiguration为“null”,因为我放在appsettings.json文件中的键/值对没有被读取。我做了一些实验,发现这种方法可行(在.net core 3.1中):

在应用程序的Program.cs文件中,添加配置文件配置:

var host = new HostBuilder()
                 .UseContentRoot(Directory.GetCurrentDirectory())
                 
                 .ConfigureWebHostDefaults(webBuilder =>
                 {
                     webBuilder.ConfigureAppConfiguration(x =>
                     {
                         x.SetBasePath(Environment.CurrentDirectory);
                         x.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
                         x.AddEnvironmentVariables();
                         x.Build();
                     });

                     webBuilder.UseKestrel(config =>
                     {
                         
                     })
                     .UseIIS()
                     .UseStartup<Startup>();
                 }).Build();
            host.Run();
var host=new HostBuilder()
.UseContentRoot(目录.GetCurrentDirectory())
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.ConfigureAppConfiguration(x=>
{
x、 SetBasePath(Environment.CurrentDirectory);
x、 AddJsonFile(“appsettings.json”,可选:false,reloadOnChange:true);
x、 AddEnvironmentVariables();
x、 Build();
});
webBuilder.UseKestrel(配置=>
{
})
.UseIIS()
.UseStartup();
}).Build();
host.Run();

这不是.net core 3.1的一部分。我可以看到文件正在根属性下加载。我对此很确定。更新了屏幕截图,我可以看到这些文件中的json文件和数据。您好Mateech,我已经正确配置了它。目前,如果我只给出“Test”作为键,它不会出现。但是如果我给出“Test:a”。它给了我价值。奇怪的事情。嗨@DeepakSingh,你可以试着这样做:
.GetSection(“test”).GetValue(“a”)
是的,我可以这样做,但它会给我一个值,我想将设置绑定到对象中。然后使用DI使用它。@DeepakSingh这可能会有帮助:
var host = new HostBuilder()
                 .UseContentRoot(Directory.GetCurrentDirectory())
                 
                 .ConfigureWebHostDefaults(webBuilder =>
                 {
                     webBuilder.ConfigureAppConfiguration(x =>
                     {
                         x.SetBasePath(Environment.CurrentDirectory);
                         x.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
                         x.AddEnvironmentVariables();
                         x.Build();
                     });

                     webBuilder.UseKestrel(config =>
                     {
                         
                     })
                     .UseIIS()
                     .UseStartup<Startup>();
                 }).Build();
            host.Run();