ASP.NET Core 配置和使用环境变量的实现

前言

通常在应用程序开发到正式上线,在这个过程中我们会分为多个阶段,通常会有 开发、测试、以及正式环境等。每个环境的参数配置我们会使用不同的参数,因此呢,在ASP.NET Core中就提供了相关的环境API,方便我们更好的去做这些事情。

环境

ASP.NET Core使用ASPNETCORE_ENVIRONMENT来标识运行时环境。

ASP.NET Core预设环境

  • Development:开发环境
  • Staging:暂存环境(测试环境)
  • 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<Startup>();
        });

通过上述代码我们,读取我们的配置文件回显读取setting.json并设置为optional: false,表示该配置为必要的配置;再往下继续读取再读取settings.{env.EnvironmentName}.json文件。当加载遇到相同的Key那么就会覆盖掉前面的配置项。

  • SetBasePath:设置配置的目录位置,如果是放在不同目录,再把路径换掉即可。
  • AddJsonFile:
    • path:文件的路径位置。
    • optional:如果是必要的配置文件,可选就要设定为false,当文件不存在就会引发FileNotFoundException。
    • reloadOnChange:如果文件被更新,就同步更新IConfiguration实例的值。

环境设置

IIS

web.config配置环境变量

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
  <handlers>
   <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
  </handlers>
  <aspNetCore processPath="dotnet" arguments=".\Demo.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
   <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Test" />
   </environmentVariables>
  </aspNetCore>
 </system.webServer>
</configuration>

Visual Studio Code

launch.json中配置ASPNETCORE_ENVIRONMENT

{
  "version": "0.1.0",
  "configurations": [
    {
      "name": ".NET Core Launch (web)",
      "type": "coreclr",
      "env": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  ]
}

Visual Studio IDE

Properties\launchSettings.json

 "profiles": {
  "IIS Express": {
   "commandName": "IISExpress",
   "launchBrowser": true,
   "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Test"
   }
  },
  }

到此这篇关于ASP.NET Core 配置和使用环境变量的实现的文章就介绍到这了,更多相关ASP.NET Core 配置和环境变量内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • ubuntu16.4下用jexus部署ASP.NET Core环境

    上篇文章介绍了下用vs发布部署到iis环境,今天说下ubuntu下部署asp.net core,不需要安装.net core sdk,自带运行时方式部署,利用jexus服务器转发请求到asp.net core. 1.部署准备环境 vmware虚拟机(其他也可以) ubuntu16.04镜像 2.发布环境 win10系统 vs2015 update3 或vs code (也可以用dotnet new -t web 命令创建项目) dotnet sdk DotNetCore.1.0.0-SDK.Pr

  • 详解将ASP.NET Core应用程序部署至生产环境中(CentOS7)

    将ASP.NET Core应用程序部署至生产环境中(CentOS7) 阅读目录 环境说明 准备你的ASP.NET Core应用程序 安装CentOS7 安装.NET Core SDK for CentOS7. 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 这段时间在使用Rabbit RPC重构公司的一套系统(微信相关),而最近相关检验(逻辑测试.压力测试)已经完成,接近部署至线上生产环境从而捣鼓了ASP.NET Core应用程序在CentOS上的部署

  • ASP.NET Core环境设置教程(2)

    Asp.Net Core是Asp.Net的一个重大的重新设计. 这个话题介绍了ASP.NET Core的新的概念,并解释它们如何帮助您开发现代的web应用程序. 使用ASP.NET Core开发应用程序,以下必须安装在你的系统: Microsoft Visual Studio 2015 Microsoft .NET Core 1.0.0 - VS 2015 Tooling Preview 2 微软提供了一个免费版本的Visual Studio,它里面还包含了SQL Server,它可以从www.

  • VS2015 搭建Asp.net core开发环境的方法

    前言 随着ASP.NET Core 1.0 rtm的发布,网上有许多相关.net core 相关文章,最近正好有时间就尝试VS2015 搭建Asp.net core开发环境,以下是简单的搭建过程,下面来一起看看吧. 步骤如下 一.首先你得装个vs2015 并且保证已经升级至 update3及以上(此处附上一个vs2015带up3的下载链接: ed2k://|file|cn_visual_studio_enterprise_2015_with_update_3_x86_x64_dvd_892329

  • Linux(Ubuntu)下搭建ASP.NET Core环境

    今天来学习一下ASP.NET Core 运行在Ubuntu中.无需安装mono . 环境 Ubuntu 14.04.4 LTS 服务器版 全新安装系统. 下载地址:http://mirrors.neusoft.edu.cn/ubuntu-releases/14.04.4/ubuntu-14.04.4-server-amd64.iso 你也可以下载桌面版安装. 下载地址:http://mirrors.neusoft.edu.cn/ubuntu-releases/14.04.4/ 安装DNVM 首先

  • ASP.NET Core环境变量和启动设置的配置教程

    在这一部分内容中,我们来讨论ASP.NET Core中的一个新功能:环境变量和启动设置,它将开发过程中的调试和测试变的更加简单.我们只需要简单的修改配置文件,就可以实现开发.预演.生产环境的切换. ASPNETCORE_ENVIRONMENT ASP.NET Core控制环境切换最核心的东西是"ASPNETCORE_ENVIRONMENT"环境变量,它直接控制当前应用程序运行的环境类型.您可以通过在项目上右键菜单选择"属性"选项,然后切换到"调试"

  • 云服务器下搭建ASP.NET Core环境

    最近.net core如火如荼,国内这方面环境搭建方面的文档也非常多,但是不少已经是过时的,就算按照那个流程走下去也避免不了一些地方早就不一样了.所以下面我将从头到尾的教大家搭建一次环境,并且成功运行官网的demo. 一.系统环境 本次笔者因为懒的去做虚拟机,所以注册了一个云提供商的试用账户作为本次的主机. 系统: Ubuntu Server 14.04.2 LTS 64bit Mono: 1.0.0-rc1-update1 Coreclr: 1.0.0-rc1-update1 二.正文 1.首

  • ASP.NET Core 配置和使用环境变量的实现

    前言 通常在应用程序开发到正式上线,在这个过程中我们会分为多个阶段,通常会有 开发.测试.以及正式环境等.每个环境的参数配置我们会使用不同的参数,因此呢,在ASP.NET Core中就提供了相关的环境API,方便我们更好的去做这些事情. 环境 ASP.NET Core使用ASPNETCORE_ENVIRONMENT来标识运行时环境. ASP.NET Core预设环境 Development:开发环境 Staging:暂存环境(测试环境) Production:正式环境 要取得系统变量ASPNET

  • Asp.Net Core配置多环境log4net配置文件的全过程

    目录 前言 配置log4net 总结 前言 在之前的文章中有讲到AspNetCore多环境配置文件的应用,我们根据自己多种环境分别配置多个appsettings.$EnvironmentName.json文件. 在实际的开发中我们可能会遇到不只一个配置文件,如当我们使用log4net日志库时,喜欢使用单独的log4net.config配置文件.并且我们还遇到不同环境下的配置文件还存在差异.这时我们可能可以效仿appsettings.json多环境配置的风格实现多环境配置文件. 配置log4net

  • ASP.NET Core快速入门之环境篇

    前言 ASP.NET Core 是一个开源和跨平台的框架,用于构建如 Web 应用.物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序.ASP.NET Core 应用可运行于 .NET Core 和完整的 .NET Framework 之上.它整合了原来ASP.NET中的MVC和WebApi框架,你可以在 Windows.Mac 和 Linux 上跨平台的开发和运行你的 ASP.NET Core 应用. vmware虚拟机安装 vmware哪里下载?360软件管家就可以下载.

  • ASP.NET Core配置和管理Web主机

    目录 1.前言 2.设置主机 2.1执行下列任务 2.2重写和增强定义的配置 3.主机配置值 3.1应用程序键(名称) 3.2捕获启动错误 3.3内容根 3.4详细错误 3.5环境 3.6HTTPS端口 3.7服务器(Kestrel) URL 4.重写配置 5.管理主机 6.IHostingEnvironment接口 7.IApplicationLifetime接口 8.作用域验证 1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生命周期管理,配置

  • ASP.NET Core中使用多环境

    ASP.NET Core 支持在多个环境中管理应用程序,如开发(Development),预演(Staging)和生产(Production).环境变量用来指示应用程序正在运行的环境,允许应用程序适当地配置. 1.环境变量 ASP.NET Core 引用一个特定的环境变量 ASPNETCORE_ENVIRONMENT 来描述应用程序当前运行的环境.这个变量可以被设置任何值,但是有三个值被约定使用:Development(开发),Staging(预演)和Production(生产). 当前环境变量

  • ASP.NET Core配置设置之Configuration包

    ASP.NET Core 中提供了一个Configuration 包,用以应用配置基于配置提供程序建立的键值对.这里以json文件配置的方式,简单的介绍一下它的用法. 首先定义一个配置文件appsettings.json: { "key1": "value1", "key2": -1, "subsection": { "key1": "value2", "key2":

  • ASP.NET Core配置教程之读取配置信息

    提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中.到了.NET Core的时候,很多我们习以为常的东西都发生了改变,其中也包括定义配置的方式.总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源.我们可以采用内存的变量作为配置的数据源,也可以直接配置定义在持久化的文件甚至数据库中. 由

  • MAC配置java+jmeter环境变量过程解析

    打开ITerm终端 进入命令输入,sudo su,输入密码 创建.bash_profile文件touch .bash_profile 打开.bash_profile文件open .bash_profile 弹出文本编辑 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HO

  • Mac配置 maven以及环境变量设置方式

    目录 1. JDK安装及配置 2. maven下载 3. maven配置 4. maven库配置 5. idea maven配置 因为换了电脑,不熟悉Mac的操作流程,自己总结了一篇比较基础的maven教程 在开始之前,JDK必须装好(oracle需要账号,如果没有账号在百度上找一个jdk下载包也可以) 1. JDK安装及配置 1.在英文输入法的状态下,按键盘“Ctrl + 空格”组合键,调出Spotlight搜索,在这里可以快速启动终端,输入ter,然后回车,即可打开终端. 2.如果你是第一次

  • 一文轻松了解ASP.NET与ASP.NET Core多环境配置对比

    目录 前言 asp.net下的多环境配置 如何增加额外的环境配置 aspnetcore下的多环境配置 什么是配置提供程序 开发阶段的多环境 发布阶段的实现多环境配置 EnvironmentName 属性 总结 前言 多环境配置应该都很熟悉了,最为常见的环境便是Debug和Release,例如下图是新建的一个asp.net项目,配置文件展开共有三个文件组成 有些开发者从来没了解过Web.Debug.config和Web.Release.config,始终是一个Web.config文件改来改去来切换

随机推荐