当前位置: 首页 > 编程笔记 >

ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

龙永思
2023-03-14
本文向大家介绍ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,包括了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件的使用技巧和注意事项,需要的朋友参考一下

一、背景

在项目开发的过程当中,开发环境与生产环境的配置肯定是不一样的。拿个最简单的例子来说,比如连接字符串这种东西,开发环境肯定不能连生产数据库。在之前的话,这种情况基本靠准备两个同名的配置文件来进行处理,然后你在本地就使用本地的配置文件,生产环境就使用生产环境的配置文件,十分麻烦。

ASP.NET Core支持利用环境变量来动态配置 JSON 文件,下面就来看一下如何在项目中使用这样功能吧。

二、准备工作

ASP.NET Core在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT,ASPNETCORE_ENVIRONMENT可以设置任意值,但框架仅支持三个值:Development、Staging 和 Production,因此我们先在项目中添加appsettings.Development.json、appsettings.Production.json和appsettings.Staging.json以备用。

项目默认生成的appsettings.json用来存放公共配置,当我们设置Development环境时,最终的配置项是appsettings.Development.json和appsettings.json求并集的结果,若两文件有同名配置项则以appsettings.Development.json为准,其他环境同理。各json文件的配置项如下:

/*appsettings.json*/
{
 "UserType": "default",
 "OnlyDefault": "onlyDefault"
}

/*appsettings.Development.json*/
{
{
 "UserType": "development",
 "OnlyDevelopment": "onlyDevelopment"
}

/*appsettings.Production.json*/
{
 "UserType": "production",
 "OnlyProduction": "onlyProduction"
}

/*appsettings.Staging.json*/
{
 "UserType": "staging",
 "OnlyStaging": "onlyStaging"
}

官方说明地址:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments?view=aspnetcore-2.1 

三、开发时设置环境变量

 ASPNETCORE_ENVIRONMENT设置为Development,那在VS中调试的时候就会读取appsettings.Development.json的数据
 ASPNETCORE_ENVIRONMENT设置为Production,那在VS中调试的时候就会读取appsettings.Production.json的数据

四、发布后设置环境变量

无论 ASPNETCORE_ENVIRONMENT设置为Development、Staging、Production,只要项目中有appsettings.Production.json,那项目发布后运行时默认会读取Production的配置。

无论 ASPNETCORE_ENVIRONMENT设置为Development、Staging、Production,只要项目中没有appsettings.Production.json那项目发布后运行时就会仅读取appsettings.json的配置。

若想在发布后动态设置环境变量,可以通过修改web.config的方式来实现,Core项目中默认是没有web.config文件的,但是发布后会生成一个web.config文件,我们可以通过添加<environmentVariable >节点来设置环境变量:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <location path="." inheritInChildApplications="false">
  <system.webServer>
   <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
   </handlers>
   <aspNetCore processPath="dotnet" arguments=".\WebCoreTest.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
    <environmentVariables>
     <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    </environmentVariables>
   </aspNetCore>
  </system.webServer>
 </location>
</configuration>
<!--ProjectGuid: 59584515-22df-4551-bfd5-a70baa85af16-->

到此这篇关于ASP.NET Core根据环境变量支持多个 appsettings.json配置文件的文章就介绍到这了,更多相关ASP.NET Core appsettings.json 内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 我试图通过设置java vm参数将环境特定的值传递给Android Studio v 2.2.2(例如服务器url、密钥库位置和密码)。到目前为止,我已经尝试了以下选项,但都没有奏效。 1.从studio设置java vm参数。vmoptions(如本文所述) 我点击了帮助- 2。属性文件 我在根build.gradle文件所在的目录中创建了一个gradle.properties文件。该文件有以下

  • 如果不配置环境变量,每次登录 MySQL 服务器时就必须进入到 MySQL 的 bin 目录下,也就是输入“cd C:\Program Files\MySQL\MySQL Server 5.7\bin”命令后,才能使用 MySQL 等其它命令工具,这样比较麻烦。配置环境变量以后就可以在任意位置执行 MySQL 命令了,本节主要介绍怎样手动配置环境变量。 MySQL 如果不配置环境变量就只能在 my

  • 类型: Object Nuxt.js 让你可以配置在客户端和服务端共享的环境变量。 例如 (nuxt.config.js): module.exports = { env: { baseUrl: process.env.BASE_URL || 'http://localhost:3000' } } 以上配置我们创建了一个 baseUrl 环境变量,如果应用设定了 BASE_URL

  • 我正在尝试根据传递到作业中的参数在Jenkins管道作业中设置环境变量;这样,我可以在需要它的管道的每个阶段使用环境变量。我尝试在环境块中使用Switch语句: 然而,这并不起作用,该作业试图将等号之前的所有行评估为KEY名称: 我该如何让它工作?

  • 本文向大家介绍详解 MAC/Linux Vi配置环境变量及Java环境变量配置,包括了详解 MAC/Linux Vi配置环境变量及Java环境变量配置的使用技巧和注意事项,需要的朋友参考一下 详解 MAC/Linux Vi配置环境变量及Java环境变量配置 vi基础 1、vi的基本概念   (1)基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mod

  • JDK 安装和配置完成后,可以测试其是否能够正常运行。选择“开始”|“运行”命令,在打开的“运行”对话框中输入 cmd 命令,按 Enter 键进入到 DOS 环境下。 在命令提示符后输入并执行 命令,系统如果输出类似图 1 所示的 JDK 版本信息,说明 JDK 已经配置成功。 图 1  查看JDK版本 提示:在命令提示符后输入测试命令时,需要注意 java 和减号之间有一个空格,而减号和 ve