From 4eb24859c8f4c12d9bde6c9e9c213852d3bb3fc4 Mon Sep 17 00:00:00 2001 From: David Fowler Date: Mon, 1 Nov 2021 22:07:02 -0700 Subject: [PATCH] Expose Use as a public method on WAB - Added a test to verify that it is publicly callable --- .../src/PublicAPI.Unshipped.txt | 1 + src/DefaultBuilder/src/WebApplication.cs | 7 ++++++- .../WebApplicationTests.cs | 20 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/DefaultBuilder/src/PublicAPI.Unshipped.txt b/src/DefaultBuilder/src/PublicAPI.Unshipped.txt index b49fc5da98ab..e0e829245584 100644 --- a/src/DefaultBuilder/src/PublicAPI.Unshipped.txt +++ b/src/DefaultBuilder/src/PublicAPI.Unshipped.txt @@ -25,6 +25,7 @@ Microsoft.AspNetCore.Builder.WebApplication.Services.get -> System.IServiceProvi Microsoft.AspNetCore.Builder.WebApplication.StartAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Builder.WebApplication.StopAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Builder.WebApplication.Urls.get -> System.Collections.Generic.ICollection! +Microsoft.AspNetCore.Builder.WebApplication.Use(System.Func! middleware) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! Microsoft.AspNetCore.Builder.WebApplicationBuilder Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() -> Microsoft.AspNetCore.Builder.WebApplication! Microsoft.AspNetCore.Builder.WebApplicationBuilder.Configuration.get -> Microsoft.Extensions.Configuration.ConfigurationManager! diff --git a/src/DefaultBuilder/src/WebApplication.cs b/src/DefaultBuilder/src/WebApplication.cs index 9d0a837c8300..42b1e94551c6 100644 --- a/src/DefaultBuilder/src/WebApplication.cs +++ b/src/DefaultBuilder/src/WebApplication.cs @@ -181,7 +181,12 @@ IApplicationBuilder IApplicationBuilder.New() return newBuilder; } - IApplicationBuilder IApplicationBuilder.Use(Func middleware) + /// + /// Adds the middleware to the application request pipeline. + /// + /// The middleware. + /// An instance of after the operation has completed. + public IApplicationBuilder Use(Func middleware) { ApplicationBuilder.Use(middleware); return this; diff --git a/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs b/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs index 7a1974ad9eb5..a1277bc22a05 100644 --- a/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs +++ b/src/DefaultBuilder/test/Microsoft.AspNetCore.Tests/WebApplicationTests.cs @@ -1835,6 +1835,26 @@ public void ConfigurationProviderTypesArePreserved() Assert.Single(((IConfigurationRoot)app.Configuration).Providers.OfType()); } + [Fact] + public async Task CanUseMiddleware() + { + var builder = WebApplication.CreateBuilder(); + builder.WebHost.UseTestServer(); + await using var app = builder.Build(); + + app.Use(next => + { + return context => context.Response.WriteAsync("Hello World"); + }); + + await app.StartAsync(); + + var client = app.GetTestClient(); + + var response = await client.GetStringAsync("/"); + Assert.Equal("Hello World", response); + } + public class RandomConfigurationSource : IConfigurationSource { public int ProvidersBuilt { get; set; }