ASP.NET Core 配置和使用环境变量的实现
前言
通常在应用程序开发到正式上线,在这个过程中我们会分为多个阶段,通常会有开发、测试、以及正式环境等。每个环境的参数配置我们会使用不同的参数,因此呢,在ASP.NETCore中就提供了相关的环境API,方便我们更好的去做这些事情。
环境
ASP.NETCore使用ASPNETCORE_ENVIRONMENT来标识运行时环境。
ASP.NETCore预设环境
- Development:开发环境
- Staging:暂存环境(测试环境)
- Production:正式环境
要取得系统变量ASPNETCORE_ENVIRONMENT,在3.0版本之前可以通过注入IHostingEnvironment来获取,3.x通过IWebHostEnvironment请看如下代码片段:
publicclassStartup { publicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv) { if(env.IsDevelopment()) { } app.Run(async(context)=> { awaitcontext.Response.WriteAsync( $"EnvironmentName:{env.EnvironmentName},IsDevelopment:{env.IsDevelopment()}" ); }); } }
网站启动后IWebHostEnvironment会从ASPNETCORE_ENVIRONMENT中获取内容,该变量可以是我们需要的任何值。也就是该变量不一定要一定是预设的值,我们是可以自定义的。
比如我们定义一个名为Test环境
publicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv) { env.EnvironmentName="test"; if(env.IsDevelopment()) { //TODO }elseif(env.IsEnvironment("text")) { //TODO } app.Run(async(context)=> { awaitcontext.Response.WriteAsync( $"EnvironmentName:{env.EnvironmentName},IsDevelopment:{env.IsDevelopment()}" ); }); }
注:在Windows和macOS上,环境变量和值不区分大小写。默认情况下,Linux环境变量和值要区分大小写。
publicstaticIHostBuilderCreateHostBuilder(string[]args)=> Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostContext,config)=> { varenv=hostContext.HostingEnvironment; config.SetBasePath(Path.Combine(env.ContentRootPath,"Configuration")) .AddJsonFile(path:"settings.json",optional:false,reloadOnChange:true) .AddJsonFile(path:$"settings.{env.EnvironmentName}.json",optional:true,reloadOnChange:true); }) .ConfigureWebHostDefaults(webBuilder=> { webBuilder.UseStartup(); });
通过上述代码我们,读取我们的配置文件回显读取setting.json并设置为optional:false,表示该配置为必要的配置;再往下继续读取再读取settings.{env.EnvironmentName}.json文件。当加载遇到相同的Key那么就会覆盖掉前面的配置项。
- SetBasePath:设置配置的目录位置,如果是放在不同目录,再把路径换掉即可。
- AddJsonFile:
- path:文件的路径位置。
- optional:如果是必要的配置文件,可选就要设定为false,当文件不存在就会引发FileNotFoundException。
- reloadOnChange:如果文件被更新,就同步更新IConfiguration实例的值。
环境设置
IIS
web.config配置环境变量
VisualStudioCode
launch.json中配置ASPNETCORE_ENVIRONMENT
{ "version":"0.1.0", "configurations":[ { "name":".NETCoreLaunch(web)", "type":"coreclr", "env":{ "ASPNETCORE_ENVIRONMENT":"Development" } } ] }
VisualStudioIDE
Properties\launchSettings.json
"profiles":{ "IISExpress":{ "commandName":"IISExpress", "launchBrowser":true, "environmentVariables":{ "ASPNETCORE_ENVIRONMENT":"Test" } }, }
到此这篇关于ASP.NETCore配置和使用环境变量的实现的文章就介绍到这了,更多相关ASP.NETCore配置和环境变量内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。