2020-10-19 乐帮网
netcore
ASP.NET Core基于以下环境变量读取配置文件 appsettings.json:Development(开发)Staging(预演)Production(生产)它们的文件名都是诸如这样的名称 appsettings.Development.json。
在运行的时候我们怎么知道是从哪个文件取值呢?
首先这个值来自键值对的配置,总结一下设置变量的方式,一共有两个:
(1)通过使用关键字来设置 DOTNET_ENVIRONMENT。
(2)通过键值ASPNETCORE_ENVIRONMENT来设置。
其中ASPNETCORE_ENVIRONMENT优先级高于 DOTNET_ENVIRONMENT。
再总结一下设置运行时环境的方法。
(1)如果你是代码开发者,使用Visual Studio开发者,在工具里运行和调试软件,右键选择项目属性,如图:
其实配置文件保存在:Properties \ launchSettings.json
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"nativeDebugging": true
}
(2)如果你使用的Visual Studio Code,那么你可直接编辑或新建文件.vscode / launch.json
例如:
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
// Configuration ommitted for brevity.
"env": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "https://localhost:5001",
"ASPNETCORE_DETAILEDERRORS": "1",
"ASPNETCORE_SHUTDOWNTIMEOUTSECONDS": "3"
}
(3)如果你只是运行代码那么在服务器上需要设置环境变量,一种是临时设置,一种是全局设置,各命令行需要根据操作系统变化而不同,(自行百度Linux各系统设置环境变量的方法)例如Windows下:
set ASPNETCORE_ENVIRONMENT=Staging
dotnet run --no-launch-profile
(4)如果你什么都不做,那默认加载的是Production,也就是appsettings.Production.json(不建议这么做)。
(5)如果你是托管在IIS宿主下,那么是还会有一个Web.config的供IIS加载,可在Web.config中添加环境变量例如:
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="COMPLUS_ForceENC" value="1" />
</environmentVariables>
(6)如果你是在Linux下部署依靠supervisor托管程序,那么在supervisor配置文件中就有相关环境变量的配置:
[program:Own.WebSite]
command=/bin/bash -c "dotnet Own.WebSite.dll"
directory=/home/wwwroot/Own.WebSite/
stderr_logfile=/tmp/Own.WebSite.error.log
stdout_logfile=/tmp/Own.WebSite.stdout.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=3
以上方法皆可行。
欢迎指正,有问题直接在公众号留言。
NetCore 2.X 从 appsettings.json获取配置值 单独方法
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力