【问题标题】:C# Lambda expression for CreateWebHostBuilderCreateWebHostBuilder 的 C# Lambda 表达式
【发布时间】:2019-06-01 09:03:16
【问题描述】:

我想使用此 Read Me 的“在 AWS Lambda 中重新加载”部分中记录的 WaitForSystemsManagerReloadToComplete() 扩展。

我相信我已经编写了正确的语法来调用它,但由于这不是一个简单的测试过程,我想确认语法。代码:

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>();
        }
 }

我担心的是,尽管我在 Lambda 表达式中调用了 WaitForSystemsManagerReloadToComplete(),但我想知道它是否会影响设计的执行线程。

【问题讨论】:

    标签: c# amazon-web-services asp.net-core aws-lambda aws-sdk-net


    【解决方案1】:

    通过查看 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(Configuration.GetSection("settings"));
    • 我是从github上的例子中复制过来的。在这种情况下确实不需要。
    猜你喜欢
    • 2017-10-02
    • 2011-01-26
    • 1970-01-01
    • 2015-12-23
    • 2020-07-02
    • 2010-12-22
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    相关资源
    最近更新 更多