我们正在尝试设置 ASP.NET MVC 6 Web 应用程序。在以前版本的 ASP.NET 中,我们始终对 Web.config
使用转换。例如,我们通过创建 Web.Production.config
来做到这一点。在本例中,Production
与项目/解决方案的构建配置的名称匹配,并作为对原始 Web.config
的转换应用。
在新版本中,配置是使用JSON完成的。然而,这种自动转换已经不存在了。在 ASP.NET MVC 6 中实现相同目标的最佳方法是什么?
最佳答案
不再有“自动转换”。
配置的工作方式有点像 jQuery 中的“扩展”属性。
如果在 2 个不同配置中设置了两个参数(appsettings.json
和 appsettings.Production.json
),则后者优先
那么让我们看看是否可以解决您的问题。
这是我的 appsettings.json
的样子:
{
"myValue" : 1
}
这是 appsettings.Production.json
的样子:
{
"myValue" : 3
}
第一个文件将包含在您的构建中,并且 .NET 将自动使用它来获取您的配置。那么它如何选择“生产”呢?
答案可以在 Startup.cs
构造函数中找到:
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
当然,您可以为配置文件选择任何变量,或者直接从环境变量或任何其他源加载它们。
旁注
名称“环境变量”似乎必须为每个人全局设置,但没有什么可以阻止您通过在调用脚本之前内联设置它们来仅为当前进程设置它们。
因此,dnx web
将在您的计算机上的生产环境中自动启动您的应用程序,但使用 Visual Studio 启动它(它会自动将环境设置为开发
)将在开发模式。
关于c# - ASP.NET MVC 6 中的配置转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34396710/