Asp.net core ASP.net核心2.2配置

Asp.net core ASP.net核心2.2配置,asp.net-core,Asp.net Core,来自webforms背景,我试图了解配置和环境转换在.net core 2.2 MVC web应用程序中的工作原理。web.config文件和ConfigurationSettings.AppSettings属性消失了。我发现答案有点不清楚 文档说明我需要在应用程序启动期间调用AddJsonFile或AddXmlFile。像这样: 公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=> WebHost.CreateDefaultBuilder(

来自webforms背景,我试图了解配置和环境转换在.net core 2.2 MVC web应用程序中的工作原理。web.config文件和ConfigurationSettings.AppSettings属性消失了。我发现答案有点不清楚

文档说明我需要在应用程序启动期间调用
AddJsonFile
AddXmlFile
。像这样:

公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext,config)=>
{
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile(
“config.json”,可选:true,reloadOnChange:true);
})
.UseStartup();
我使用的项目模板已具有以下逻辑:

publicstaticvoidmain(字符串[]args)
{
CreateWebHostBuilder(args.Build().Run();
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup();
我的项目有appsettings.json和appsettings.development.json文件。当我在Startup类的Startup方法上放置一个断点时,我可以检查配置参数,并看到两个json配置文件作为字典公开

问题

  • 那么,我必须显式地调用AddJSonFile吗,或者这实际上是由框架以某种方式为我完成的

  • 如何处理不同部署的配置转换

  • 在控制器中访问此配置的最佳方式是什么

  • 那么,我必须显式地调用AddJSonFile吗,或者这实际上是由框架以某种方式为我完成的

    这是在框架内完成的。最值得注意的是,“DefaultBuilder”添加了appsettings.json和appsettings.{Environment}.json等内容

    如何处理不同部署的配置转换

    您需要在主机上设置环境变量(这是最简单的方法,尽管这里还有其他方法)。例如,如果您将环境设置为生产环境,那么它将首先加载appsettings.json,然后加载appsettings.Production.json并覆盖默认设置。更多信息请点击此处:

    在控制器中访问此配置的最佳方式是什么

    有两种方法。您可以使用框架中内置的选项模式:

    或者你可以用老式的POCO's()

    您只需在ConfigureServices方法中加载配置并将其绑定到singleton:

    services.AddSingleton(Configuration.GetSection("myConfiguration").Get<MyConfiguration>());
    
    看看这个:
    public class ValuesController : Controller
    {
     private readonly MyConfiguration _myConfiguration;
    
     public ValuesController(MyConfiguration myConfiguration)
     {
     _myConfiguration = myConfiguration;
     }
    }