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

2023-05-16

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

在项目开发的过程当中,开发环境、测试环境、生产环境的配置肯定是不一样的,单靠一个 appsettings.json,没法满足各种环境。所以就需要根据不同的环境,加载不同的配置文件。

环境变量

ASP.NET Core在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT,ASPNETCORE_ENVIRONMENT可以设置任意值,但框架仅支持三个值:Development(开发),、Staging(分阶段), 和 Production(生产),分别对应项目中的appsettings.Development.json、appsettings.Production.json和appsettings.Staging.json。

我们新建项目时,只有appsettings.Development.json,另外两个则需要我们添加。

在这里插入图片描述
系统默认读取配置文件的顺序是:

开发环境
appsettings.Development.json -> appsettings.json

生产环境
appsettings.Production.json -> appsettings.json

没有Development和Production的时候默认读取 appsettings.json

开发调试时指定环境

开发调试时,默认指定Development环境,我们也可以自己指定

在这里插入图片描述
Docker 发布时指定环境

Docker 发布时默认指定生产环境,我们也可以自行指定

默认发布命令:

docker run -d -p 5001:80 --name myservice1 192.168.8.25:5000/myapi  --ip=192.168.8.61 --port=5001

带环境变量发布命令:

docker run -d -p 5002:80 --name myservice2 -e ASPNETCORE_ENVIRONMENT=Staging  192.168.8.25:5000/myapi  --ip=192.168.8.61 --port=5002

注: Docker run -e xxx=abc,-e 可以指定环境变量

我这里试了下,appsettings.Production.json 是连接到服务器consul,appsettings.Staging.json 连接到本地consul,测试成功。

查看myservice1 环境变量

docker inspect myservice1

在这里插入图片描述

查看myservice2 环境变量

docker inspect myservice2

在这里插入图片描述

web.config指定环境

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

<?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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET Core根据环境变量支持多个 appsettings.json配置文件 的相关文章

  • 只允许在 datagridview 单元格中键入一些字符

    有没有办法只将某些字符添加到 datagridview 单元格中 像 1234567890 据我所知 您可以使用两种方法来实现此目的 第一个 我认为最好的 是使用 CellValidating 事件DataGridView并检查输入的文本是
  • org.json.JSONArray 类型的值无法转换为 JSONObject

    陷入了这个错误 3169 3190 com meisolsson app E JSON 解析器 解析数据时出错 org json JSONException Value type 0 can see custom stories true
  • Matlab 的快速 JSON 解析器

    您知道 Matlab 中有一个非常快速的 JSON 解析器吗 目前我正在使用JSONlab http www mathworks com matlabcentral fileexchange 33381 jsonlab a toolbox
  • 如何在C#中获取登录SID

    如何在 C net 中检索 Windows 登录 SID 不是用户 SID 而是每个会话的唯一新 SID 恐怕您必须求助于使用 P Invoke 有一个如何做到这一点的示例pinvoke net http www pinvoke net d
  • 正则表达式获取“-”之前的所有字符

    如何获取字符之前的字符串 使用正则表达式 例如 我有 text 1 我想回来 text 所以我看到了实现这一目标的许多可能性 string text Foobar test 正则表达式 匹配所有内容 直到第一个 Match result R
  • ComponentOne 3D 曲面地图的替代方案 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在为我们正在进行的一个新项目研究替代控制库 要求之一是以表面图的形式显示数据 如下面的 Comp
  • async-await 如何“节省线程”?

    我知道使用无线程异步有更多线程可用于服务输入 例如 HTTP 请求 但我不明白当异步操作完成并且需要一个线程来运行它们时 这如何不会潜在地导致线程饥饿继续 假设我们只有 3 个线程 Thread 1 Thread 2 Thread 3 并且
  • Visual Studio中设置“目标框架”有什么作用

    在 Visual Studio 中 您可以为项目设置 目标框架 或多或少的常识是 如果将 目标框架 设置为 例如 NET 4 5 2 则应用程序在仅安装了 NET 4 5 1 的计算机上将无法运行 第一个问题 这是真的吗 第二个问题 该设置
  • 如何在C#中模拟鼠标点击?

    如何在 C winforms 应用程序中模拟鼠标点击 我结合了多个来源来生成我当前正在使用的下面的代码 我还删除了 Windows Forms 引用 以便我可以从控制台和 WPF 应用程序使用它 而无需其他引用 using System u
  • 将 CSV 文件上传到 SQL 服务器

    上传大文件的最佳方式是什么csv使用 C 将数据文件导入 SQL Server 该文件包含大约 30 000 行和 25 列 首先 你不需要编程的东西 您可以使用 SQL 管理工具直接将 CSV 文件上传到 SQL 数据库 但是 如果您确实
  • jQuery 无法从本地主机检索数据

    我有一个非常简单的 jQuery 来检索我最新的推文 getJSON http twitter com statuses user timeline username json count 1 function data tweet tex
  • 微软编码标准文档

    Microsoft 是否有可供下载的编码标准文档 我想使用他们的标准 主要针对 C 如果您使用 C 则可以通过运行以下命令在编码时了解 Microsoft 的首选风格StyleCop http code msdn microsoft com
  • 一次强制执行一个异步可观察对象

    我正在尝试使用以下方法将一些 TPL 异步集成到更大的 Rx 链中Observable FromAsync 就像这个小例子一样 using System using System Reactive Linq using System Thr
  • 如何检查 JSON 对象数组是否包含数组中定义的值?

    我有以下 JSON 数据 categories catValue 1 catName Arts crafts and collectibles catValue 2 catName Baby catValue 3 catName Beaut
  • R 将 data.frame 转换为 json

    我正在尝试将 data frame 转换为 json 格式 我的 data frame 具有以下结构 a lt rep c Mario Luigi each 3 b lt sample 34 57 size length a df lt d
  • 我可以在 WinRT / Windows 8 Store 应用程序中绑定 DynamicObject

    我有以下代码 public class MyClass DynamicObject INotifyPropertyChanged Dictionary
  • 如何使构造函数只能由基类访问?

    如果我想要一个只能从子类访问的构造函数 我可以使用protected构造函数中的关键字 现在我想要相反的 我的子类应该有一个构造函数 该构造函数可以由其基类访问 但不能从任何其他类访问 这可能吗 这是我当前的代码 问题是子类有一个公共构造函
  • pyspark:将 schemaRDD 保存为 json 文件

    我正在寻找一种将数据从 Apache Spark 以 JSON 格式导出到各种其他工具的方法 我认为一定有一种非常简单的方法来做到这一点 示例 我有以下 JSON 文件 jfile json key value a1 key2 value
  • 从原始 URL 获取重定向 URL

    我的数据库中有一个表 其中包含一些网站的 URL 我必须打开这些 URL 并验证这些页面上的一些链接 问题是某些 URL 被重定向到其他 URL 对于这样的 URL 我的逻辑是失败的 有什么方法可以传递原始 URL 字符串并获取重定向的 U
  • 如果 foreach 是一个结构数组,它会复制每个元素吗?

    我有一个结构数组 做foreach运算符在迭代数组时复制每个元素 据我所理解foreach只是底层的语法糖转换为for 所以看来答案是否定的 但我很想得到一些确认 PS 看来应该有人已经问过了 但我无法轻易找到任何东西 因此 请以提供的参考

随机推荐

  • linux设置systemd服务

    linux设置systemd服务 access dir etc systemd system create file whose name ended with service chmod 644 xx service edit xx se
  • 普通用户使用docker命令

    普通用户使用docker命令 add docker group sudo cat etc group docker sudo groupadd g 999 docker add user to docker group sudo gpass
  • samba服务器

    samba服务器 install samba edit etc samba smb conf default comment 61 default path 61 opt es backups valid users 61 zsk13 wr
  • linux安装mongodb

    install mongodb tar zxvf mongodb linux x86 64 4 0 22 tgz useradd mongod init passwd with mongod passwd mongod mkdir for
  • linux制作iso启动盘

    制作iso启动盘 sudo fdisk l umount dev sdb umount dev sdb1 umount dev sdd2 umount dev sdd3 sudo mkfs ext4 dev sdb sudo dd if 6
  • ros2+opencv抓取rtsp视频流

    遇到的坑 xff1a rtsp视频流和转ros2 topic放到一个线程里 xff0c 频繁提示解码丢帧的情况 解决这个问题需要将opencv获取rtsp视频流单独开一个线程 xff0c 不能在里面处理任何多余的代码 代码如下 xff1a
  • 机械臂标定实战

    硬件资源 xff1a 机械臂viper300 摄像头realsense d435i 软件版本 xff1a 操作系统 xff1a Ubuntu18 04 ROS Melodic 标定算法 xff1a 采用easy handeye 算法包 ht
  • Linux 下的 Docker 安装及创建私有仓(三)

    Linux 下的 Docker 安装及创建私有仓 xff08 三 xff09 辛苦打工人 xff0c 今天继续搬砖 xff0c 搞搞私有仓用户和密码 废话不说 xff0c 开工 xff01 1 安装httpd tools 授权需要用到 xf
  • .Net Core Web API 发布到Linux Docker(一)

    Net Core Web API 发布到Linux Docker xff08 一 xff09 Net Core Web API 项目已经建好 xff0c 想要发布到Linux Docker 上 xff0c 具体研究了一下 xff0c 发现有
  • 设置mysql允许外网访问

    mysql的root账户 我在连接时通常用的是localhost或127 0 0 1 公司的测试服务器上的mysql也是localhost所以我想访问无法访问 测试暂停 解决方法如下 1 修改表 登录mysql数据库 切换到mysql数据库
  • .Net Core Web API 发布到Linux Docker(二)

    Net Core Web API 发布到Linux Docker xff08 二 xff09 本章将尝试 Net Core Web API 直接发布到私有仓 Net Core Web API 直接发布到Docker私有仓 1 选择需要发布的
  • .Net Core微服务入门——Consul集群搭建(一)

    Net Core微服务入门 Consul集群搭建 xff08 一 xff09 前几天一直在本地机器试用Consul xff0c 今天特意在服务器上试试 xff0c 并搭建下集群 一 服务器安装consul 获取镜像 docker pull
  • .Net Core微服务入门——Consul集群搭建(二)

    Net Core微服务入门 Consul集群搭建 xff08 二 xff09 1 先启动第一个consul服务 xff1a consul1 docker run name consul1 d p 8500 span class token
  • .Net Core微服务入门——Consul集群搭建(三)

    Net Core微服务入门 Consul集群搭建 xff08 三 xff09 本章将介绍 Consul 集群 Client 还记得第一篇中 xff0c 我们再Consul中启动了2个MyAPI服务么 xff0c 我们重启下 xff0c 看下
  • .Net Core微服务入门——Consul集群搭建(四)

    Net Core微服务入门 Consul集群搭建 xff08 四 xff09 多台服务器集群搭建 1 先关闭几台集群服务器防火墙 当然 xff0c 不关闭也可以 xff0c 那就必须开通端口权限 consul 涉及的端口 xff1a 850
  • Docker 同一主机容器间通信

    Docker 容器间通信 本文我们采用bridge网络通信 1 创建bridge网络 docker network create testnet 2 查看Docker网络 docker network ls 3 运行容器连接到testnet
  • Centos7端口查看开放,防火墙开启关闭命令等

    1 开放 关闭端口 开放5001端口 firewall cmd zone 61 public add port 61 5001 tcp permanent 关闭5001端口 firewall cmd zone 61 public remov
  • .Net Core微服务入门——Ocelot API网关接入(一)

    Net Core微服务入门 Ocelot API网关接入 上一章我们测试了一个简单的Client 端访问Consul实现服务注册与发现 xff0c 但是现实生产环境我们直接通过Client自行连接Consul实现服务注册与发现 xff0c
  • .Net Core微服务入门——Ocelot API网关接入(二)

    Net Core微服务入门 Ocelot API网关接入 xff08 二 xff09 我们先接入Consul xff0c 实现服务发现 服务发现 1 引入 Ocelot Provider Consul 包 2 修改ocelot json x
  • .NET Core根据环境变量支持多个 appsettings.json配置文件

    NET Core根据环境变量支持多个 appsettings json配置文件 在项目开发的过程当中 xff0c 开发环境 测试环境 生产环境的配置肯定是不一样的 xff0c 单靠一个 appsettings json xff0c 没法满足