netcore读取json文件_Asp.net Core启动流程讲解(二)

34953eda-a633-eb11-8da9-e4434bdf6706.png

asp.net core内,launchSettings.json提供给开发工具一些参数化,提供开发调试,appsettings.json(appsettings.Development.json)做发行/开发调试时配置参数化

launchSettings.json

Properties 文件夹中找到此文件

1、Visual Studio 或使用.NET Core CLI 运行此 ASP.NET Core 项目时,将使用此文件中的设置。
2、仅用于本地开发环境。
3、默认项目的profiles节点下包括 IIS Express项目同名的节点,前者是Visual Studio的IIS Express调试参数,后者是命令行启动.net core项目的配置参数
可通过配置 profiles/节点/environmentVariables/ASPNETCORE_ENVIRONMENT 实现配置环境变量,通过调用IHostingEnvironment.IsEnvironment实现动态区分环境。

IHostingEnvironment.EnvironmentName会默认读取 ASPNETCORE_ENVIRONMENT 环境变量
Startup类的Configure方法默认实现

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

IHostingEnvironment.IsDevelopment是扩展方法,实际上是

              public static bool IsDevelopment(this IHostingEnvironment  hostingEnvironment)              {                     if (hostingEnvironment == null)                     {                           throw new ArgumentNullException("hostingEnvironment");                     }                     return  hostingEnvironment.IsEnvironment(EnvironmentName.Development);              }

IHostingEnvironment.IsEnvironment实际上是扩展方法,具体实现如下

              public static bool IsEnvironment(this IHostingEnvironment hostingEnvironment, string environmentName)              {                     if (hostingEnvironment == null)                     {                           throw new ArgumentNullException("hostingEnvironment");                     }                     return string.Equals(hostingEnvironment.EnvironmentName, environmentName, 5);              }

最后,实际上区分运行环境是IHostingEnvironment.EnvironmentName加载ASPNETCORE_ENVIRONMENT 环境变量

扩展自定义开发环境

复制launchSettings.json文件的profiles结构,修改一段自定义启动配置

    "Debug_Project": {      "commandName": "Project",      "launchBrowser": true,      "launchUrl": "api/values",      "applicationUrl": "http://localhost:5000",      "environmentVariables": {        "ASPNETCORE_ENVIRONMENT": "Debug"      }    }

Visual Studio 下果然出现了Debug_Project调试启动项

在Startup类的 添加一段测试代码

            if (env.IsEnvironment("Debug"))            {                var before = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");                Console.WriteLine($"{before}");            }

如愿打印出了Debug,说明程序启动调试时,环境变量ASPNETCORE_ENVIRONMENT的值,如愿变成了"Debug"

1、借助于launchSettings.json,可以在开发调试环境,区分运行环境,比如加载通过参数,加载不同的 appsettings.json 文件,比如开发默认的环境变量值 Development 加载配置文件 appsettings.Development.json,反之则加载 appsettings.json
2、由于区分IHostingEnvironment.EnvironmentName实际上是指向约定的环境变量 ASPNETCORE_ENVIRONMENT ,可以在发布k8s/docker时,配置环境变量ASPNETCORE_ENVIRONMENT,区分运行环境,做不同的选项加载。

appsettings.json(appsettings.Development.json)

综上所述,appsettings.json(appsettings.Development.json)的加载,实际上是IHostingEnvironment.EnvironmentName实际上是指向约定的环境变量 ASPNETCORE_ENVIRONMENT,读出环境环境,是否为Development,成立,则加载配置文件 appsettings.Development.json,反之则加载配置文件 appsettings.json

后记

深挖了一下Startup配置文件加载过程,发现了很多之前遗漏的知识,这也就是这个分享系列的主旨,查漏补缺,一边写,一边查阅资料,梳理
如果对于内容有交流和学习的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值