ASP.NET MVC 6 中的配置转换

Configuration transformations in ASP.NET MVC 6

我们正在尝试设置一个 ASP.NET MVC 6 网络应用程序。在 ASP.NET 的早期版本中,我们总是对 Web.config 使用转换。例如,我们通过创建 Web.Production.config 来做到这一点。在这种情况下,Production 与 project/solution 的构建配置名称相匹配,并作为对原始 Web.config 的转换应用。

在新版本中,配置使用JSON完成。然而,这样的自动转换已经不存在了。在 ASP.NET MVC 6 中完成相同任务的最佳方法是什么?

没有了"automatic transformations"。

配置工作的方式有点像 jQuery 中的 "extending" 属性。

如果在两个不同的配置中设置了两个参数(appsettings.jsonappsettings.Production.json)那么后者优先

那么让我们看看是否可以解决您的问题。

这是我的 appsettings.json 的样子:

{
   "myValue" : 1
}

下面是 appsettings.Production.json 的样子:

{
   "myValue" : 3
}

第一个文件将包含在您的构建中,.NET 将自动使用它来获取您的配置。那么它是如何拾取 "Production" 的呢?

好吧,答案可以在 Startup.cs 构造函数中找到:

 // Set up configuration sources.
 var builder = new ConfigurationBuilder()
     .AddJsonFile("appsettings.json")
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

当然,您可以为您的配置文件选择任何变量,或者直接从环境变量或任何其他来源加载它们。

旁注

名称 "environment variable" 似乎必须为每个人全局设置,但没有什么可以阻止您通过在调用脚本之前内联设置它们来仅为当前进程设置它们。

所以 dnx web 将在您的机器上自动启动您的应用程序,但使用 Visual Studio 启动它(谁会自动将环境设置为 Development)将以 DEV 模式启动它.