专栏首页角落的白板报ASP.NET Core appsettings.json文件(9)《从零开始学ASP.NET CORE MVC》:

ASP.NET Core appsettings.json文件(9)《从零开始学ASP.NET CORE MVC》:

本文出自《从零开始学ASP.NET CORE MVC》 推荐文章:ASP.NET Core launchsettings.json文件

ASP.NET Core appsettings.json文件

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

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

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

appsettings.json f文件: 我们的项目是通过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 中的所有各种配置源读取配置信息而设计的。
  • 如果在多个配置源中具有相同密钥名称的配置设置,简单来说就是重名了,则后面的配置源将覆盖先前的配置源 。

几个地方的演示,分别是如何替换的。 launchsetting

  • 静态类WebHostCreateDefaultBuilder()方法在应用程序启动时会自动去调用,按特定顺序读取配置源。
  • 要查看配置源的读取顺序,请查看以下链接上的ConfigureAppConfiguration()方法 https://github.com/aspnet/MetaPackages/blob/release/2.2/src/Microsoft.AspNetCore/WebHost.cs

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

  1. appsettings.json,
  2. appsettings.{Environment}.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>();

本文分享自微信公众号 - 角落的白板报(jiaoluodebaibanbao),作者:梁桐铭

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [52ABP实战系列] .NET CORE实战入门视频课程出来啦

    早安! 各位道友好,.NET CORE入门视频的第一章已经录制完毕了。视频会放在传课网、网易云课堂及segment fault。 本来想的是第一章合计6个小节...

    角落的白板报
  • NPM 和 Yarn 使用国内淘宝镜像源提升各依赖安装速度

    首先查看自己是否安装 NPM,如果没有安装 NPM,请查看 下载并安装.NET Core SDK[1]

    角落的白板报
  • 【19】ASP.NET Core 依赖注入

    ASP.NET Core 提供以下 3 种方法来使用依赖项注入容器注册服务。我们使用的方法决定了注册服务的生命周期。

    角落的白板报
  • 我国域名注册保有量位居世界第二,顶级域名55个

    近日,来自中国信息通信研究院的数据显示,截止2017年年底,我国域名注册保有量约5000万,位居世界第二。比2016年增长20%。其中,国家与地区代码...

    躲在树上的域小名
  • 脑洞大开,特斯拉推出蛇形充电机器人

    镁客网
  • 深度学习实战教程(3)--(TensorFlow)inception_v4模型跑Google Flower数据集

    Inception_v4 Checkpoint:http://download.tensorflow.org/models/inception_v4_2016_...

    对角巷法师
  • Node.js真的无所不能?那些不适用的应用领域分析

    Node.js是一个服务器端JavaScript解释器,底层采用的还是libevent;它的目标是帮助程序员构建高度可伸缩的应用程序,目前对Node.js 的采...

    李海彬
  • Node.js真的无所不能?那些不适用的应用领域分析

    Node.js是一个服务器端JavaScript解释器,底层采用的还是libevent;它的目标是帮助程序员构建高度可伸缩的应用程序,目前对Node.js 的采...

    李海彬
  • mysql1062错误: Duplicate entry '...' for key 'PRIMARY

    Duplicate entry ‘…’ for key ‘PRIMARY,即插入数据时,要插入数据的主键数据(…)已经存在,不能再重复添加了。例:Duplica...

    周小董
  • MessagePack:最可能取代JSON的存在。

    科普一个冷门的,但是很强的技术:MessagePack,简称msgpack。msgpack不是软件,是一个标准,可以先把它看成二进制的json,“二进制json...

    Jean

扫码关注云+社区

领取腾讯云代金券