如何使用 config.json 为 Visual Studio 2015/DNX 项目设置特定于环境的变量?

How can I use config.json to set environment-specific variables for a Visual Studio 2015/DNX project?

我有一个 Visual Studio 2015 解决方案,由针对 DNX 框架的项目组成。我一直在本地工作,但我计划部署到 Azure 环境 (dev/test/prod)。自然地,该解决方案根据环境使用不同的数据库连接字符串和其他变量。过去我使用云配置文件来设置这些变量,用 CloudConfigurationManager.

读取它们

我了解到我需要使用 config.json 文件。我的 Startup.cs 文件中有以下代码:

public Startup(IHostingEnvironment env, IApplicationEnvironment app)
{
    Configuration = new ConfigurationBuilder(app.ApplicationBasePath)
        .AddJsonFile("config.json")
        .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables()
        .Build();

    Configuration.Set("ASPNET_ENV", "Development");
}

我的 config.json 文件目前是一个空对象 { }。如何向该文件添加变量(语法?),以及如何从代码访问它们?

你可以使用普通的旧 JSON。例如,这里是定义连接字符串的方法:

{
  "Foo": "Bar"
}

要访问配置值,您可以:

config.Get("username")

或:

config["username"];

您可以在此处找到更多信息:http://docs.asp.net/en/latest/fundamentals/configuration.html

请注意启动代码中的这一行:

.AddJsonFile($"config.{env.EnvironmentName}.json", optional: true)

这会添加一个额外的 JSON 配置文件,该文件的命名取决于您的环境名称。因此,向您的项目添加一个名为:

的新文件
config.<environment-name>.json

并在那里设置详细信息,例如:

{
  "AppSettings": {
    "SomeVariable": "Blah"
  },
  "Data": {
    "YourConnectionString": {
      "ConnectionString": "<connection string here>"
    }
  }
}

为了阅读配置,这里有一个很好的答案:Using IConfiguration globally in mvc6