Skip to content

Commit f1dd68f

Browse files
[Middleware] Move to GenericHost (#23626)
1 parent 921d2c6 commit f1dd68f

File tree

67 files changed

+6303
-3940
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+6303
-3940
lines changed

src/Middleware/CORS/test/UnitTests/CorsMiddlewareTests.cs

Lines changed: 227 additions & 154 deletions
Large diffs are not rendered by default.

src/Middleware/CORS/test/testassets/CorsMiddlewareWebSite/Startup.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33

4+
using System.Threading.Tasks;
45
using Microsoft.AspNetCore.Builder;
56
using Microsoft.AspNetCore.Hosting;
67
using Microsoft.Extensions.DependencyInjection;
8+
using Microsoft.Extensions.Hosting;
79

810
namespace CorsMiddlewareWebSite
911
{
@@ -19,15 +21,19 @@ public void Configure(IApplicationBuilder app)
1921
app.UseCors(policy => policy.WithOrigins("http://example.com"));
2022
app.UseMiddleware<EchoMiddleware>();
2123
}
22-
public static void Main(string[] args)
24+
public static Task Main(string[] args)
2325
{
24-
var host = new WebHostBuilder()
25-
.UseKestrel()
26-
.UseIISIntegration()
27-
.UseStartup<Startup>()
26+
var host = new HostBuilder()
27+
.ConfigureWebHost(webHostBuilder =>
28+
{
29+
webHostBuilder
30+
.UseKestrel()
31+
.UseIISIntegration()
32+
.UseStartup<Startup>();
33+
})
2834
.Build();
2935

30-
host.Run();
36+
return host.RunAsync();
3137
}
3238
}
33-
}
39+
}

src/Middleware/ConcurrencyLimiter/sample/Startup.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public void ConfigureServices(IServiceCollection services)
1717
{
1818
services.AddStackPolicy(options =>
1919
{
20-
options.MaxConcurrentRequests = 2;
20+
options.MaxConcurrentRequests = 2;
2121
options.RequestQueueLimit = 25;
2222
});
2323
}
@@ -33,13 +33,17 @@ public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
3333
});
3434
}
3535

36-
public static void Main(string[] args)
36+
public static Task Main(string[] args)
3737
{
38-
new WebHostBuilder()
39-
.UseKestrel()
40-
.UseStartup<Startup>()
38+
return new HostBuilder()
39+
.ConfigureWebHost(webHostBuilder =>
40+
{
41+
webHostBuilder
42+
.UseKestrel()
43+
.UseStartup<Startup>();
44+
})
4145
.Build()
42-
.Run();
46+
.RunAsync();
4347
}
4448
}
4549
}

src/Middleware/Diagnostics.EntityFrameworkCore/test/FunctionalTests/DatabaseErrorPageMiddlewareTest.cs

Lines changed: 91 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using Microsoft.EntityFrameworkCore;
1818
using Microsoft.EntityFrameworkCore.Infrastructure;
1919
using Microsoft.Extensions.DependencyInjection;
20+
using Microsoft.Extensions.Hosting;
2021
using Microsoft.Extensions.Logging;
2122
using Xunit;
2223

@@ -27,10 +28,19 @@ public class DatabaseErrorPageMiddlewareTest
2728
[Fact]
2829
public async Task Successful_requests_pass_thru()
2930
{
30-
var builder = new WebHostBuilder().Configure(app => app
31-
.UseDatabaseErrorPage()
32-
.UseMiddleware<SuccessMiddleware>());
33-
var server = new TestServer(builder);
31+
using var host = new HostBuilder()
32+
.ConfigureWebHost(webHostBuilder =>
33+
{
34+
webHostBuilder
35+
.UseTestServer()
36+
.Configure(app => app
37+
.UseDatabaseErrorPage()
38+
.UseMiddleware<SuccessMiddleware>());
39+
}).Build();
40+
41+
await host.StartAsync();
42+
43+
var server = host.GetTestServer();
3444

3545
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
3646

@@ -53,10 +63,19 @@ public virtual async Task Invoke(HttpContext context)
5363
[Fact]
5464
public async Task Non_database_exceptions_pass_thru()
5565
{
56-
var builder = new WebHostBuilder().Configure(app => app
57-
.UseDatabaseErrorPage()
58-
.UseMiddleware<ExceptionMiddleware>());
59-
var server = new TestServer(builder);
66+
using var host = new HostBuilder()
67+
.ConfigureWebHost(webHostBuilder =>
68+
{
69+
webHostBuilder
70+
.UseTestServer()
71+
.Configure(app => app
72+
.UseDatabaseErrorPage()
73+
.UseMiddleware<ExceptionMiddleware>());
74+
}).Build();
75+
76+
await host.StartAsync();
77+
78+
var server = host.GetTestServer();
6079

6180
var ex = await Assert.ThrowsAsync<InvalidOperationException>(async () =>
6281
await server.CreateClient().GetAsync("http://localhost/"));
@@ -82,7 +101,8 @@ public async Task Existing_database_not_using_migrations_exception_passes_thru()
82101
{
83102
using (var database = SqlTestStore.CreateScratch())
84103
{
85-
TestServer server = SetupTestServer<BloggingContext, DatabaseErrorButNoMigrationsMiddleware>(database);
104+
using var host = await SetupServer<BloggingContext, DatabaseErrorButNoMigrationsMiddleware>(database);
105+
using var server = host.GetTestServer();
86106
var ex = await Assert.ThrowsAsync<DbUpdateException>(async () =>
87107
await server.CreateClient().GetAsync("http://localhost/"));
88108

@@ -114,7 +134,8 @@ public async Task Error_page_displayed_no_migrations()
114134
{
115135
using (var database = SqlTestStore.CreateScratch())
116136
{
117-
TestServer server = SetupTestServer<BloggingContext, NoMigrationsMiddleware>(database);
137+
using var host = await SetupServer<BloggingContext, NoMigrationsMiddleware>(database);
138+
using var server = host.GetTestServer();
118139
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
119140

120141
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
@@ -142,13 +163,13 @@ public virtual Task Invoke(HttpContext context)
142163
[ConditionalFact]
143164
[OSSkipCondition(OperatingSystems.Linux)]
144165
[OSSkipCondition(OperatingSystems.MacOSX)]
145-
public void No_exception_on_diagnostic_event_received_when_null_state()
166+
public async Task No_exception_on_diagnostic_event_received_when_null_state()
146167
{
147168
using (var database = SqlTestStore.CreateScratch())
148169
{
149-
using (var server = SetupTestServer<BloggingContext, NoMigrationsMiddleware>(database))
170+
using (var server = await SetupServer<BloggingContext, NoMigrationsMiddleware>(database))
150171
{
151-
using (var db = server.Host.Services.GetService<BloggingContext>())
172+
using (var db = server.Services.GetService<BloggingContext>())
152173
{
153174
db.Blogs.Add(new Blog());
154175

@@ -172,7 +193,8 @@ public async Task Error_page_displayed_pending_migrations()
172193
{
173194
using (var database = SqlTestStore.CreateScratch())
174195
{
175-
TestServer server = SetupTestServer<BloggingContextWithMigrations, PendingMigrationsMiddleware>(database);
196+
using var host = await SetupServer<BloggingContextWithMigrations, PendingMigrationsMiddleware>(database);
197+
using var server = host.GetTestServer();
176198
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
177199

178200
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
@@ -208,7 +230,8 @@ public async Task Error_page_displayed_pending_model_changes()
208230
{
209231
using (var database = SqlTestStore.CreateScratch())
210232
{
211-
TestServer server = SetupTestServer<BloggingContextWithPendingModelChanges, PendingModelChangesMiddleware>(database);
233+
using var host = await SetupServer<BloggingContextWithPendingModelChanges, PendingModelChangesMiddleware>(database);
234+
using var server = host.GetTestServer();
212235
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
213236

214237
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
@@ -245,7 +268,8 @@ public async Task Error_page_then_apply_migrations()
245268
{
246269
using (var database = SqlTestStore.CreateScratch())
247270
{
248-
TestServer server = SetupTestServer<BloggingContextWithMigrations, ApplyMigrationsMiddleware>(database);
271+
using var host = await SetupServer<BloggingContextWithMigrations, ApplyMigrationsMiddleware>(database);
272+
using var server = host.GetTestServer();
249273
var client = server.CreateClient();
250274

251275
var expectedMigrationsEndpoint = "/ApplyDatabaseMigrations";
@@ -302,7 +326,11 @@ public async Task Customize_migrations_end_point()
302326

303327
using (var database = SqlTestStore.CreateScratch())
304328
{
305-
var builder = new WebHostBuilder()
329+
using var host = new HostBuilder()
330+
.ConfigureWebHost(webHostBuilder =>
331+
{
332+
webHostBuilder
333+
.UseTestServer()
306334
.Configure(app =>
307335
{
308336
app.UseDatabaseErrorPage(new DatabaseErrorPageOptions
@@ -317,7 +345,11 @@ public async Task Customize_migrations_end_point()
317345
services.AddDbContext<BloggingContextWithMigrations>(
318346
optionsBuilder => optionsBuilder.UseSqlite(database.ConnectionString));
319347
});
320-
var server = new TestServer(builder);
348+
}).Build();
349+
350+
await host.StartAsync();
351+
352+
var server = host.GetTestServer();
321353

322354
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
323355

@@ -335,16 +367,24 @@ public async Task Pass_thru_when_context_not_in_services()
335367
{
336368
var logProvider = new TestLoggerProvider();
337369

338-
var builder = new WebHostBuilder()
339-
.Configure(app =>
370+
using var host = new HostBuilder()
371+
.ConfigureWebHost(webHostBuilder =>
340372
{
341-
app.UseDatabaseErrorPage();
342-
app.UseMiddleware<ContextNotRegisteredInServicesMiddleware>();
373+
webHostBuilder
374+
.UseTestServer()
375+
.Configure(app =>
376+
{
377+
app.UseDatabaseErrorPage();
378+
app.UseMiddleware<ContextNotRegisteredInServicesMiddleware>();
343379
#pragma warning disable CS0618 // Type or member is obsolete
344-
app.ApplicationServices.GetService<ILoggerFactory>().AddProvider(logProvider);
380+
app.ApplicationServices.GetService<ILoggerFactory>().AddProvider(logProvider);
345381
#pragma warning restore CS0618 // Type or member is obsolete
346-
});
347-
var server = new TestServer(builder);
382+
});
383+
}).Build();
384+
385+
await host.StartAsync();
386+
387+
var server = host.GetTestServer();
348388

349389
try
350390
{
@@ -391,7 +431,8 @@ public async Task Pass_thru_when_exception_in_logic()
391431
{
392432
var logProvider = new TestLoggerProvider();
393433

394-
var server = SetupTestServer<BloggingContextWithSnapshotThatThrows, ExceptionInLogicMiddleware>(database, logProvider);
434+
using var host = await SetupServer<BloggingContextWithSnapshotThatThrows, ExceptionInLogicMiddleware>(database, logProvider);
435+
using var server = host.GetTestServer();
395436

396437
try
397438
{
@@ -430,7 +471,8 @@ public async Task Error_page_displayed_when_exception_wrapped()
430471
{
431472
using (var database = SqlTestStore.CreateScratch())
432473
{
433-
TestServer server = SetupTestServer<BloggingContext, WrappedExceptionMiddleware>(database);
474+
using var host = await SetupServer<BloggingContext, WrappedExceptionMiddleware>(database);
475+
using var server = host.GetTestServer();
434476
HttpResponseMessage response = await server.CreateClient().GetAsync("http://localhost/");
435477

436478
Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
@@ -461,29 +503,36 @@ public virtual Task Invoke(HttpContext context)
461503
}
462504
}
463505

464-
private static TestServer SetupTestServer<TContext, TMiddleware>(SqlTestStore database, ILoggerProvider logProvider = null)
506+
private static async Task<IHost> SetupServer<TContext, TMiddleware>(SqlTestStore database, ILoggerProvider logProvider = null)
465507
where TContext : DbContext
466508
{
467-
var builder = new WebHostBuilder()
468-
.Configure(app =>
509+
var host = new HostBuilder()
510+
.ConfigureWebHost(webHostBuilder =>
469511
{
470-
app.UseDatabaseErrorPage();
512+
webHostBuilder
513+
.UseTestServer()
514+
.Configure(app =>
515+
{
516+
app.UseDatabaseErrorPage();
471517

472-
app.UseMiddleware<TMiddleware>();
518+
app.UseMiddleware<TMiddleware>();
473519

474-
if (logProvider != null)
475-
{
520+
if (logProvider != null)
521+
{
476522
#pragma warning disable CS0618 // Type or member is obsolete
477-
app.ApplicationServices.GetService<ILoggerFactory>().AddProvider(logProvider);
523+
app.ApplicationServices.GetService<ILoggerFactory>().AddProvider(logProvider);
478524
#pragma warning restore CS0618 // Type or member is obsolete
479-
}
480-
})
481-
.ConfigureServices(services =>
482-
{
483-
services.AddDbContext<TContext>(optionsBuilder => optionsBuilder.UseSqlite(database.ConnectionString));
484-
});
525+
}
526+
})
527+
.ConfigureServices(services =>
528+
{
529+
services.AddDbContext<TContext>(optionsBuilder => optionsBuilder.UseSqlite(database.ConnectionString));
530+
});
531+
}).Build();
532+
533+
await host.StartAsync();
485534

486-
return new TestServer(builder);
535+
return host;
487536
}
488537

489538
private static UrlEncoder _urlEncoder = UrlEncoder.Default;

0 commit comments

Comments
 (0)