Я хочу использовать расширения WaitForSystemsManagerReloadToComplete(), как описано в разделе «Перезагрузка в AWS Lambda» этого Прочти меня.
Я считаю, что написал правильный синтаксис для его вызова, но, поскольку это не простой процесс для тестирования, я хотел подтвердить синтаксис. Код:
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("/AppName")
.Build()
.WaitForSystemsManagerReloadToComplete(TimeSpan.FromSeconds(5));
})
.UseStartup<Startup>();
}
}
Меня беспокоит то, что, хотя я вызываю WaitForSystemsManagerReloadToComplete() в лямбда-выражении, мне интересно, влияет ли это на исполняемый поток, как задумано.
Глядя на примеры на Github, я бы сказал, что называть это в выражении неправильно. Вам не нужно создавать конфигурацию в выражении только для того, чтобы сделать этот вызов. Вместо этого переместите этот код в Startup
и вызовите его там.
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("/AppName");
})
.UseStartup<Startup>();
}
}
Запускать
public class Startup {
public Startup(IConfiguration configuration) {
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services) {
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
//...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env) {
if (env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
}
app.UseMvc();
Configuration.WaitForSystemsManagerReloadToComplete(TimeSpan.FromSeconds(5));
}
}
Я скопировал его из примеров на гитхабе. В данном случае он действительно не нужен.
Хорошая идея вызвать позже. Я не думаю, что вам нужна эта строка: services.Configure<Settings>(Configuration.GetSection("settings"));