asp.net-core - ASP.NET Core 2:在 `Startup()` 中,如何指定其他参数来选择正确的配置?
问题描述
我们正在构建一个新的 ASP.NET Core 应用程序,以部署到需要不同配置选项的几个不同环境中。例如,Azure
、AWS
和local
用于开发。每个都需要不同的配置设置。我们已经使用了常见的:
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
它处理 debug vs staging vs prod,但我们有第二个维度,所以我们还想要一个:
.AddJsonFile($"appsettings.{DeploySite}.json", optional: true)
或类似的东西。我们可以传入on 命令行或环境变量或任何方便的东西,但在方法中提供的内容中DeploySite
似乎没有任何类似的内容。IHostingEnvironment
Startup
这如何最好地完成?
解决方案
Program.CreateWebHostBuilder
在 ASP.NET Core 2+中,这是在Startup
. 我们在部署中做了几乎相同的事情,需要一个appsettings.<name>.json
配置文件。我们通过以--App:InstanceName <name>
. 然后在启动时设置它:
public static void Main(string[] args)
{
IWebHost host = CreateWebHostBuilder(args).Build();
host.Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostContext, config) =>
{
IConfigurationRoot commandConfig = config.Build();
config.AddJsonFile($"appsettings.{commandConfig["App:InstanceName"]}.json", optional: true, reloadOnChange: true);
});
}
推荐阅读
- c++ - 如何让构造函数接受所有类型的迭代器?
- sql - SQL 查询为 CSV 或 EXCEL 格式
- c++ - 有没有办法在某些东西中包含 WinAPI 以确保安全并防止命名冲突?
- ios - 上传文件到 Github LFS,上传后遇到错误,用 Xcode 编译并上传大文件
- c - Why am I counting one less in following code that counts number of elements in linked list
- ruby-on-rails - 替换了 rails 身份验证中的验证码,现在可以复制具有相同详细信息的用户
- javascript - 切换文本字段启用和禁用
- csv - 新手问题 - 计算 csv 文件中点之间距离的最简单方法是什么?
- javascript - 如何在 DIV 元素中显示此函数的结果?
- python - 您是否必须腌制缩放器和 ML 模型才能进行部署?