CreateWebHostBuilder 的 C# Lambda 表达式
C# Lambda expression for CreateWebHostBuilder
我想使用 Read Me 的 "Reloading in 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(),但我想知道它是否会按设计影响执行线程。
通过查看 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));
}
}
我想使用 Read Me 的 "Reloading in 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(),但我想知道它是否会按设计影响执行线程。
通过查看 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));
}
}