c# - 避免在 ASP.NET Core Program.cs 中使用静态值
问题描述
在我的 CreateWebHostBuilder() 方法中,我添加了 AWS Systems Manager Parameter Store 作为 Configuration Builder 的附加源:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(builder =>
{
builder.AddSystemsManager("/ConfigureStoreName/");
})
.UseStartup<Startup>();
}
}
而不是硬编码“/ConfigureStoreName/ ”,我想让它成为一个配置值。
当我打电话.ConfigureAppConfiguration()
时,我可以访问使用的appsettings.json中的配置值.CreateDefaultBuilder()
吗?如果是这样,我将如何更新我的代码来调用它?如果不是,那么避免在方法中使用静态值的最佳方法是CreateWebHostBuilder()
什么?
解决方案
使用该信息预加载设置文件。
例如,如果设置文件包含
{
//...
"AWS": {
"Profile": "local-test-profile",
"Region": "us-west-2",
"ConfigureSource": {
"Path": "/ConfigureStoreName/"
}
}
//...
}
将其加载到配置中以提取值。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json") //<-- or whichever file has that information
.Build();
string path = configuration.GetValue<string>("AWS:ConfigureSource:Path");
//Or a strongly typed model with aws options
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(builder =>
{
builder.AddSystemsManager(path);
})
.UseStartup<Startup>();
}
推荐阅读
- html - 如何解决此错误'祖先违反以下内容安全策略指令:“框架祖先'无''
- java - Spring Redisson 哨兵错误 - 至少需要两个哨兵
- swift - 在模拟器中工作,但不在真实设备上工作 swift xcode alamofire
- mysql - HTTP 状态 500 – 内部服务器错误 -jsp-tomcat - (Dockerfile)
- node.js - request.on(可读)在nodejs中为单个请求调用了两次
- url-shortener - 有没有办法获取 bit.ly 的真实地址?
- spring - 将 Spring 应用程序移植到 Spring Boot
- python-3.x - 试图将 mp3 转换为 wav
- javascript - jQuery:在模式上构建一个表单,其中角色字段为选择,用户字段为其他。如果在其他选择上选择了角色,则必须禁用角色
- laravel - 处理程序中的 Laravel dontReport 不起作用