ASP.NET Core appsettings.json 文件

Posted cool2feel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Core appsettings.json 文件相关的知识,希望对你有一定的参考价值。

ASP.NET Core appsettings.json 文件

在本节中,我们将讨论 ASP.NET Core 项目中appsettings.json文件的重要性。

在以前的 ASP.NET 版本中,我们将应用程序配置设置(例如数据库连接字符串)存储在web.config文件中。 在 Asp.Net Core 中, 应用程序配置设置可以来自以下不同的配置源。

  • 文件(appsettings.json, appsettings..json) Environment环境不同,托管在对应环境。
  • User secrets (用户机密)
  • Environment variables (环境变量)
  • Command-line arguments (命令行参数)

appsettings.json文件: 我们的项目是通过 Asp.net Core 预制的"空"模板创建的,所以我们的项目中已经有一个 appsettings.json 的文件了。 我们可以对文件进行如下修改,补充一个MyKey的键值对:


  "Logging": 
    "LogLevel": 
      "Default": "Warning"
    
  ,
  "AllowedHosts": "*",
  "MyKey": " appsettings.json中Mykey的值"

访问配置信息

若要访问 "Startup " 类中的配置信息, 请注入框架提供的 IConfiguration服务。Startup类位于 startup. cs 文件中。

public class Startup

    private IConfiguration _configuration;

    //注意,我们在这里使用了依赖注入
    public Startup(IConfiguration configuration)
    
        _configuration = configuration;
    

    public void ConfigureServices(IServiceCollection services)
    
    

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    
        if (env.IsDevelopment())
        
            app.UseDeveloperExceptionPage();
        

        app.Run(async (context) =>
        
            await context.Response.WriteAsync(_configuration["MyKey"]);
        );
    

依赖注入

在以前版本的 ASP.NET 中,依赖注入是可选的,要配置它,我们必须使用像 Ninject,autofac、castle windsor 等第三方框架。

在 asp. net Core 中, 依赖注入是不可或缺的一部分。依赖注入能使我们能够创建低耦合、可扩展且易于测试的系统。

我们将在即将推出的视频中详细讨论依赖注入,尽情期待。

ASP.NET Core IConfiguration 服务

  • IConfiguration 服务是为了从 asp.net Core 中的所有各种配置源读取配置信息而设计的。
  • 如果在多个配置源中具有相同密钥名称的配置设置,简单来说就是重名了,则后面的配置源将覆盖先前的配置源  。
  • 静态类WebHostCreateDefaultBuilder()方法在应用程序启动时会自动去调用,按特定顺序读取配置源。
  • 要查看配置源的读取顺序,请查看以下链接上的ConfigureAppConfiguration()方法 https://github.com/aspnet/MetaPackages/blob/release/2.2/src/Microsoft.AspNetCore/WebHost.cs

检查文件后,您将看到,以下是读取各种配置源的默认顺序

  1. appsettings.json,
  2. appsettings..json
  3. 用户机密
  4. 环境变量 5.命令行参数

如果您想要改变他们的调用顺序,甚至往里面添加属于自己的自定义配置信息,我们将在后面的课程中讨论如何自定义配置源。

小结

所以翻源代码也没有那么可怕嘛

///<summary>
        ///Initializes a new instance of the <see cref="WebHostBuilder"/> class with pre-configured defaults using typed Startup.
        ///</summary>
        ///<remarks>
        ///  The following defaults are applied to the returned <see cref="WebHostBuilder"/>:
        ///    use Kestrel as the web server and configure it using the application‘s configuration providers,
        ///    set the <see cref="IHostingEnvironment.ContentRootPath"/> to the result of <see cref="Directory.GetCurrentDirectory()"/>,
        ///    load <see cref="IConfiguration"/> from ‘appsettings.json‘ and ‘appsettings.[<see cref="IHostingEnvironment.EnvironmentName"/>].json‘,
        ///    load <see cref="IConfiguration"/> from User Secrets when <see cref="IHostingEnvironment.EnvironmentName"/> is ‘Development‘ using the entry assembly,
        ///    load <see cref="IConfiguration"/> from environment variables,
        ///    load <see cref="IConfiguration"/> from supplied command line args,
        ///    configure the <see cref="ILoggerFactory"/> to log to the console and debug output,
        ///    enable IIS integration.
        ///</remarks>
        ///<typeparam name ="TStartup">The type containing the startup methods for the application.</typeparam>
        ///<param name="args">The command line args.</param>
        ///<returns>The initialized <see cref="IWebHostBuilder"/>.</returns>
        public static IWebHostBuilder CreateDefaultBuilder<TStartup>(string[] args) where TStartup : class =>
            CreateDefaultBuilder(args).UseStartup<TStartup>();

 

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

技术图片


 

以上是关于ASP.NET Core appsettings.json 文件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core读取appsettings.json配置文件信息

Asp.Net Core 进阶 —— 读取appsettings.json

ASP.NET CORE读取appsettings.json的配置

AppSettings.json 用于 ASP.NET Core 中的集成测试

从类库访问 Asp.net-core 中的 appsetting.json

asp.net core 读取appsettings.json