如何在ASP.NET Core 6控制器中访问appsettings.json中的值。

16 浏览
0 Comments

如何在ASP.NET Core 6控制器中访问appsettings.json中的值。

我从 Visual Studio 2022 提供的默认模板中创建了一个全新的ASP.NET Core Web API项目(.NET 6)。之后,我在appsettings.json文件中添加了一个配置键,并尝试在controller类中访问它,但无法成功。\n我的appsettings.json文件如下:\n{\n \"Logging\": {\n \"LogLevel\": {\n \"Default\": \"Information\",\n \"Microsoft.AspNetCore\": \"Warning\"\n }\n },\n \"AllowedHosts\": \"*\",\n \"ProjectName\" : \"VeryFunny\"\n}\ncontroller代码如下:\npublic class WeatherForecastController : ControllerBase\n{\n private static readonly string[] Summaries = new[]\n {\n \"Freezing\", \"Bracing\", \"Chilly\", \"Cool\", \"Mild\", \"Warm\", \"Balmy\", \"Hot\", \"Sweltering\", \"Scorching\"\n };\n private readonly IConfiguration _configuration;\n public WeatherForecastController(IConfiguration configuration)\n {\n _configuration = configuration;\n }\n [HttpGet(Name = \"GetWeatherForecast\")]\n public IEnumerable Get()\n {\n return Enumerable.Range(1, 5).Select(index => new WeatherForecast\n {\n Date = DateTime.Now.AddDays(index),\n TemperatureC = Random.Shared.Next(-20, 55),\n Summary = _configuration[\"ProjectName\"] // <-- 我在这里添加了这个\n })\n .ToArray();\n }\n}\n在上面的方法中,我收到的是null,而不是VeryFunny字符串。我假设在.NET 6中,通过将Startup.cs类和Program.cs类合并后,IConfiguration现在很容易获取,但看来我是错的。\n更新:\n这是在Visual Studio 2022中创建一个新的ASP.NET Core Web API项目(.NET 6)时获得的基本项目。当我创建一个针对.NET 5的新项目时,我没有任何问题,因为在那里,Startup.cs和Program.cs是单独的类,并且已经在Startup类中注入了IConfiguration的实例,而在.NET 6中不是这样。有一个现有的SO问题提出了同样的问题,但问题和答案都集中在.NET 6之前的.NET实现上,例如.NET Core 2.x,.NET 5等。我的问题是.NET 6特定的。

0
0 Comments

问题的出现原因是appsettings.json文件没有在构建时复制。解决方法是右键点击appsettings.json文件,选择属性,然后将“复制到输出目录”设置为“始终复制”或“如果较新则复制”。

如果你有多个appsettings文件,比如appsettings.json、appsettings.Development.json、appsettings.Production.json,请确保在所有文件中都有相同的键(ProjectName)。

但是这些方法都没有帮助。我更新了我的问题以更加具体。

0
0 Comments

问题的原因是需要从appsettings.json文件中访问值,在ASP.NET Core 6控制器中。解决方法是使用构造函数中的IConfiguration接口来访问appsettings.json文件。

下面是一个示例代码:

public class HomeController : Controller
{
        private readonly IConfiguration _config;
        private string ConnectionString;
        public HomeController(IConfiguration configuration)
        {
            _config = configuration;
            ConnectionString = _config["Configurations:ConnectionString"];
            Console.WriteLine(ConnectionString);
        }
}

在这个示例中,使用IConfiguration接口从appsettings.json文件中访问了连接字符串。appsettings.json文件的代码如下:

"Configurations": {

"ConnectionString": "MyDBConnectionStringExample;"

}

如果需要处理数据库通信,建议创建一个单独的类来处理,否则以上方法可以正常工作。希望对大家有所帮助。

这是一个很棒的答案,正是我所需要的。感谢你写下这个答案。我之前无法弄清如何在我的控制器中获取配置值。

非常感谢您留下反馈,我很高兴能够帮助到您。

0
0 Comments

问题的原因是在ASP.NET Core 6控制器中如何从appsettings.json文件中访问值。解决方法是使用`.GetValue`方法来获取值。

首先,我们需要在控制器的构造函数中注入`IConfiguration`接口,并将其赋值给私有字段`_configuration`。然后,在我们需要访问配置值的地方,可以使用`_configuration.GetValue("key")`方法来获取值,其中`type`是要获取的值的类型,`key`是在appsettings.json中定义的键。

以下是一个示例代码,演示了如何从appsettings.json中获取配置值:

private readonly IConfiguration _configuration;
private readonly ILogger _logger;
public WeatherForecastController(ILogger logger, IConfiguration configuration)
{
    _logger = logger;
    _configuration = configuration;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable Get()
{
    return Enumerable.Range(1, 5).Select(index => new WeatherForecast
    {
        Date = DateTime.Now.AddDays(index),
        TemperatureC = Random.Shared.Next(-20, 55),
        Summary = _configuration.GetValue("ProjectName")
    })
    .ToArray();
}

在这个例子中,我们通过调用`_configuration.GetValue("ProjectName")`方法来获取appsettings.json文件中`ProjectName`键的值,并将其赋给`Summary`属性。

如果您需要进一步了解如何从appsettings.json中读取值以及模型绑定的更详细信息,您可以参考以下链接:

- [https://stackoverflow.com/a/58432834/3559462](https://stackoverflow.com/a/58432834/3559462)

- [https://qawithexperts.com/article/asp-net/read-values-from-appsettingsjson-in-net-core/467](https://qawithexperts.com/article/asp-net/read-values-from-appsettingsjson-in-net-core/467)

希望这些信息对您有帮助。如果您遇到任何问题,请随时更新您的问题,以便我们能够提供更具体的帮助。

0