Net Core 2.0正在寻找appsettings.Production.json

Gin*_*ano 8 asp.net .net-core asp.net-core asp.net-core-2.0

我创建了几个这样的.net核心2网络应用程序,直到这一个没有问题.

在IISExpress下运行本地它运行正常但是当我将调试版本部署到服务器上的IIS文件夹时,我遇到了问题.

当我读取配置条目时,找不到:

_config["MySettings:MyName"];
Run Code Online (Sandbox Code Playgroud)

文件内容:

appsettings.Development.json

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "MySettings": {
    "MyName": "JohnDoe"
  }
}
Run Code Online (Sandbox Code Playgroud)

appsettings.json

{
  "Logging": {
    "IncludeScopes": false,
    "Debug": {
      "LogLevel": {
        "Default": "Trace"
      }
    },
    "Console": {
      "LogLevel": {
        "Default": "Warning"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

launchSetting.json

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:60668/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/security",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebApi.ViewerSecurity": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/security",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:60669/"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我复制appsettings.Development.json并重命名为appsettings.Production.json它可以工作.

我在prod文件中更改了"MyName"的值并记录了它.是的,从appsettings.Production.json读取.

怎么样和为什么?生产没有在任何地方定义.

Kah*_*azi 16

默认值ConfigurationBuilder是查找appsettings.<EnvironmentName>.json文件,因此根据您使用的环境,更改此文件的名称.当您在IIS Express中Development时,您处于部署应用程序的环境中Production.这就是你需要的原因appsettings.Production.json.

在调试时,会调用一个环境变量ASPNETCORE_ENVIRONMENT,该变量设置为,Development并且在部署中ASPNETCORE_ENVIRONMENT未设置,默认为Production

  • 如果未设置`ASPNETCORE_ENVIRONMENT`,则默认为"生产". (3认同)
  • @ginalster是的,这是链接https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.1 (3认同)
  • 这记录了吗? (2认同)