大型展厅设计公司,个人网站建设优化,寿光建设银行网站,成都政务网站建设(给DotNet加星标#xff0c;提升.Net技能)转自#xff1a;HueiFengcnblogs.com/yyfh/p/12339961.html前言通常在应用程序开发到正式上线#xff0c;在这个过程中我们会分为多个阶段#xff0c;通常会有 开发、测试、以及正式环境等。每个环境的参数配置我们会使用不同的参数… (给DotNet加星标提升.Net技能)转自HueiFengcnblogs.com/yyfh/p/12339961.html前言通常在应用程序开发到正式上线在这个过程中我们会分为多个阶段通常会有 开发、测试、以及正式环境等。每个环境的参数配置我们会使用不同的参数因此呢在ASP.NET Core中就提供了相关的环境API方便我们更好的去做这些事情。环境ASP.NET Core使用ASPNETCORE_ENVIRONMENT来标识运行时环境。ASP.NET Core预设环境1、Development开发环境2、Staging暂存环境(测试环境)3、Production正式环境要取得系统变量ASPNETCORE_ENVIRONMENT在3.0版本之前可以通过注入IHostingEnvironment来获取3.x通过IWebHostEnvironment 请看如下代码片段public class Startup{public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()) { } app.Run(async (context) {await context.Response.WriteAsync($EnvironmentName: {env.EnvironmentName},IsDevelopment: {env.IsDevelopment()} ); }); }}网站启动后IWebHostEnvironment会从ASPNETCORE_ENVIRONMENT中获取内容该变量可以是我们需要的任何值。也就是该变量不一定要一定是预设的值我们是可以自定义的。比如我们定义一个名为Test环境public void Configure(IApplicationBuilder app, IWebHostEnvironment env){ env.EnvironmentName test;if (env.IsDevelopment()) {//TODO }else if (env.IsEnvironment(text)){//TODO } app.Run(async (context) {await context.Response.WriteAsync($EnvironmentName: {env.EnvironmentName},IsDevelopment: {env.IsDevelopment()} ); });}注在 Windows 和 macOS 上环境变量和值不区分大小写。 默认情况下Linux 环境变量和值要区分大小写 。public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostContext, config) {var env 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设置配置的目录位置如果是放在不同目录再把路径换掉即可。AddJsonFilepath文件的路径位置。optional如果是必要的配置文件可选就要设定为false当文件不存在就会引发FileNotFoundException。reloadOnChange如果文件被更新就同步更新IConfiguration实例的值。环境设置IISweb.config配置环境变量xml version1.0 encodingutf-8?configurationsystem.webServerhandlersadd nameaspNetCore path* verb* modulesAspNetCoreModule resourceTypeUnspecified /handlersaspNetCore processPathdotnet arguments.\Demo.dll stdoutLogEnabledfalse stdoutLogFile.\logs\stdoutenvironmentVariablesenvironmentVariable nameASPNETCORE_ENVIRONMENT valueTest /environmentVariablesaspNetCoresystem.webServerconfigurationVisual Studio Codelaunch.json中配置ASPNETCORE_ENVIRONMENT{version: 0.1.0,configurations: [ {name: .NET Core Launch (web),type: coreclr,env: {ASPNETCORE_ENVIRONMENT: Development } } ]}Visual Studio IDEProperties\launchSettings.jsonprofiles: {IIS Express: {commandName: IISExpress,launchBrowser: true,environmentVariables: {ASPNETCORE_ENVIRONMENT: Test } }, }推荐阅读 点击标题可跳转ASP.NET Core 3.x 授权中的概念一文带你了解C# DLR 的世界深入理解ASP.NET Core 依赖注入看完本文有收获请转发分享给更多人关注「DotNet」加星标提升.Net技能 好文章我在看❤️