appsettings.json appsettings.development.json 到底使用哪一个?
其实是根据系统环境变量来的 ASPNETCORE_ENVIRONMENT 是development就加载 appsettings.development.json 。
我们在调试的时候,系统会自动设置环境变量到development. 但是发布到服务器上以后,即使是debug版本,它也不会自动设置环境变量,需要自己设置。除了development, 其实还可以有更多版本的appsettings,只要有对应的环境变量。
详情参见:https://www.sohu.com/a/151280913_468635
1. Visual studio 调试启动设置
在Properties/lanchSettings.json 中设置
2. MacOS/Linux 服务器设置
命令行:
export ASPNETCORE_ENVIRONMENT=development
这样执行后,只是对当前的会话有效。如果想一直生效的话,还要把这句加到/etc/profile里
执行 vi /etc/profile ,加到最后面一行即可
查看环境变量 :
env:列出所有的环境变量
echo 变量名: 显示单独变量
dotnet *.dll启动项目的时候,我们可以看到当前的Hosting environment,以便检查是否正确,示例:
>dotnetAspNetCore.Samples.dll Hostingenvironment: Prodtction Contentroot path: C:UsersyuezhDesktopDemoAspNetCore.Samples Nowlistening on: http://*:5003 Applicationstarted. Press Ctrl+C to shut down.
最好的方式是做一个appsetting.json 存放公共的内容。appsetting.development.json存放测试的内容。 appsettings.product.json存放生产的内容。实际使用中 appsetting.json里不要和其他的有重复的内容,否则容易犯错误。比如一个数据库连接字符串,appsetting.json里指向了生产服务器。appsetting.development.json里指向了测试服务器。如果一旦忘记在测试服务器上设置变量,就会连接到生产服务器,造成灾难后果。如果appsettings.json里不包含连接信息,服务器上也没设置环境变量,就会导致连接不到服务器报错,这样就容易发现问题。如果你还不放心,可以在测试服务器上不要放appsettings.product.json