在frameworks项目里,我们可以通过设置web.config的环境变量,然后再发布时指定具体的变量,去实现生产环境和测试环境的发布,发布之后,每个环境有自己的配置文件,frameworks会更新环境把web.config进行合并,
而在dotnetcore项目里,这种方法不适用了。
一.项目配置
1.添加配置文件
配置文件名称 为 appsettings.xxxx.json 来命名。创建后会自动移动到appsettings.json下面
2.环境变量设置
仅添加配置文件是无法 在调试或发布 中用到指定的配置的。需要配置环境变量才能正确的使用。
可以分别在2个地方进行配置。
①项目属性-调试-添加配置
在左侧添加对应的环境名称,添加后设置环境变量,XXXX为刚设置的appsetting配置别名
ASPNETCORE_ENVIRONMENT=XXXXXX
②launchSettings.json 直接配置
实际上在launchSettings里面同样可以配置。
二.项目调试
做好配置后调试就非常简单了。
1.选择对应配置好的 环境变量 运行
运行后在输出中可以 看到 环境变量已经切换
三.发布
发布可以通过界面发布 ,修改配置环境变量。也可以通过 命令 进行发布
dotnet pubish -c 环境变量名
但是仅仅这样发布还是会出现很多问题,比如配置文件会都打包出来,linux下配置不生效 等等。
配置打包多余的配置文件的解决方法asp.net core在发布时排除配置文件 - 刘小吉 - 博客园 (cnblogs.com)
服务器不生效的问题
1.windows服务器
发布后 实际上windows 服务器是生效的。
可以通过系统环境变量修改当前环境,也可以通过修改web.config 修改当前的环境,如果发布正确会自动切换。
2.Linux服务器
Linux服务器上发布的Web.config 中的 ASPNETCORE_ENVIRONMENT配置不生效。
通过修改Linux上的env 环境变量进行配置,设置服务器统一的环境变量。
export ASPNETCORE_ENVIRONMENT=环境名称
3.Docker发布
如果在Linux上多环境,可以使用docker发布来解决。
运行容器时只要 加上 -e ASPNETCORE_ENVIRONMENT=环境变量名 即可
docker run -d -p 80:80 --name c_name -e ASPNETCORE_ENVIRONMENT=Development i_name
--------------------------------------------------------------------------------------
项目启动时候都会显示 当前的环境变量可以在控制台日志中查看并确认。
文章评论