SEO网站建设全方位部署,安装wordpress的目录改变了,网站怎么制作视频,亿唐网不做网站做品牌0.背景在开发项目的过程当中#xff0c;生产环境与调试环境的配置肯定是不一样的。拿个最简单的例子来说#xff0c;比如连接字符串这种东西#xff0c;调试环境肯定是不能连接生产数据库的。在之前的话#xff0c;这种情况只能说是你 COPY 两个同名的配置文件来进行处理。… 0.背景在开发项目的过程当中生产环境与调试环境的配置肯定是不一样的。拿个最简单的例子来说比如连接字符串这种东西调试环境肯定是不能连接生产数据库的。在之前的话这种情况只能说是你 COPY 两个同名的配置文件来进行处理。然后你在本地就使用本地的配置生产环境就使用生产环境的配置文件十分麻烦。而 ASP .NET CORE 支持利用环境变量来动态配置 JSON 文件下面就来看一下吧。1.准备工作首先在你的 ASP .NET CORE 项目当中添加一个 appsettings.json 文件内容如下{ ConnectionString: { Default: Normal Database}
}之后再继续添加一个 appsettings.Development.json之后在你的解决方案管理器就会看到下面这种情况。更改其内容如下{ ConnectionString: { Default: Development Database}
}之后呢我们继续添加一个生产环境的配置文件名字叫做 appsettings.Production.json 更改其内容如下{ ConnectionString: { Default: Production Database}
}最后我们的文件应该如下图以上就是我们的准备工作我们准备了两个环境的配置文件以及一个默认情况的配置文件下面我就就来看看如何应用环境变量来达到我们想要的效果。2.环境控制在项目调试的时候我们可以通过右键项目属性跳转到调试可以看到一个环境变量的设定通过更改 ASPNETCORE_ENVIRONMENT 的值来切换不同环境。可以看到目前我们处于 Development 也就是开发环境那么按照我们的设想就应该读取 appsettings.Development.json 的文件数据了。2.编写代码新建一个 AppConfigure 静态类他的内部有一个字典用于缓存不同环境不同路径的 IConfigurationRoot 配置。用法的话也很简单3.测试测试的话直接更改环境变量就可以看到效果了更改其值为 Production。现在我们来运行并且添加一个监视变量。看样子它现在读取的就是我们的生产环境的数据了。4.代码分析其实吧也不用这么麻烦在 Startup.cs 通过构造注入得到的 IConfiguration 就是按照 GetConfigurationRoot() 这个方法来进行构建的你直接使用 Configuration/ConfigurationRoot 的索引器就可以访问到与环境变量相应的 JSON 文件了。可能你还不太理解明明在 GetConfigurationRoot() 方法里面使用 AddJsonFile() 方法只是添加了两次个 Provider 为什么在使用索引器访问 JSON 配置的时候就是使用的当前环境的 JSON 文件呢我其实以为最开始 .NET CORE 对于 IConfiguration 的索引器实现就是读取了当前环境变量然后根据这个环境变量去匹配对应的 Provider 取得值。最后翻阅了 .NET CORE 的源代码之后发现是我想错了其实他就是单纯的翻转了一下 Providers 的集合然后取的第一个元素。回到第三节所写的代码可以看到我们首先添加的是 appsettings.json 然后再根据环境变量添加的 $appsettings.{environmentName}.json 所以反转之后取得的肯定就是带环境变量的配置文件咯。回到顶部5.不同 OS 的环境变量配置5.1 Windows直接右键计算机手动添加环境变量。5.2 Linux使用 export 命令直接进行环境变量设置。export ASPNETCORE_ENVIRONMENProduction5.3 DockerDocker 配置最为简单直接在启动容器的时候加上 -e 参数即可例如docker run -d -e ASPNETCORE_ENVIRONMENProduction --name testContainer testImage原文地址https://www.cnblogs.com/myzony/p/9418858.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com