C # Лямбда-выражение для CreateWebHostBuilder - PullRequest
1 голос
/ 31 мая 2019

Я хочу использовать расширения WaitForSystemsManagerReloadToComplete (), как описано в разделе «Перезагрузка в AWS-лямбде» этого Read Me .

Я считаю, что написал правильный синтаксис для его вызова, но так как это не простой процесс для тестирования, я хотел подтвердить синтаксис. Код:

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 () в лямбда-выражении, мне интересно, влияет ли это на исполняемый поток, как было задумано.

1 Ответ

2 голосов
/ 31 мая 2019

Посмотрев на примеры на 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));
    }
}
...