ASP.NET Core 中appsettings各环境设置以及使用

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获取配置值 单独方法

关于从appsetting.json中获取值

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力