From 5607ea1e0cbdd4edc9c38007eb00acdd8da6831f Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Thu, 9 Apr 2020 16:43:18 -0700 Subject: [PATCH] Remove workaround in HeaderPropagationMiddleware (#20533) Fixed by #14146 which starts each request on a fresh ExecutionContext --- .../src/HeaderPropagationMiddleware.cs | 5 +-- .../test/HeaderPropagationMiddlewareTest.cs | 38 ------------------- 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/src/Middleware/HeaderPropagation/src/HeaderPropagationMiddleware.cs b/src/Middleware/HeaderPropagation/src/HeaderPropagationMiddleware.cs index bd24fb63e2..f62c9e4a72 100644 --- a/src/Middleware/HeaderPropagation/src/HeaderPropagationMiddleware.cs +++ b/src/Middleware/HeaderPropagation/src/HeaderPropagationMiddleware.cs @@ -33,8 +33,7 @@ namespace Microsoft.AspNetCore.HeaderPropagation _values = values ?? throw new ArgumentNullException(nameof(values)); } - // This needs to be async as otherwise the AsyncLocal could bleed across requests, see https://github.com/aspnet/AspNetCore/issues/13991. - public async Task Invoke(HttpContext context) + public Task Invoke(HttpContext context) { // We need to intialize the headers because the message handler will use this to detect misconfiguration. var headers = _values.Headers ??= new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -57,7 +56,7 @@ namespace Microsoft.AspNetCore.HeaderPropagation } } - await _next.Invoke(context); + return _next.Invoke(context); } private static StringValues GetValue(HttpContext context, HeaderPropagationEntry entry) diff --git a/src/Middleware/HeaderPropagation/test/HeaderPropagationMiddlewareTest.cs b/src/Middleware/HeaderPropagation/test/HeaderPropagationMiddlewareTest.cs index 99bb4997a5..c15f257dab 100644 --- a/src/Middleware/HeaderPropagation/test/HeaderPropagationMiddlewareTest.cs +++ b/src/Middleware/HeaderPropagation/test/HeaderPropagationMiddlewareTest.cs @@ -185,43 +185,5 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests Assert.Contains("in", CapturedHeaders.Keys); Assert.Equal("Test", CapturedHeaders["in"]); } - - [Fact] - public async Task HeaderInRequest_WithBleedAsyncLocal_HasCorrectValue() - { - // Arrange - Configuration.Headers.Add("in"); - - // Process first request - Context.Request.Headers.Add("in", "dirty"); - await Middleware.Invoke(Context); - - // Process second request - Context = new DefaultHttpContext(); - Context.Request.Headers.Add("in", "test"); - await Middleware.Invoke(Context); - - // Assert - Assert.Contains("in", CapturedHeaders.Keys); - Assert.Equal(new[] { "test" }, CapturedHeaders["in"]); - } - - [Fact] - public async Task NoHeaderInRequest_WithBleedAsyncLocal_DoesNotHaveIt() - { - // Arrange - Configuration.Headers.Add("in"); - - // Process first request - Context.Request.Headers.Add("in", "dirty"); - await Middleware.Invoke(Context); - - // Process second request - Context = new DefaultHttpContext(); - await Middleware.Invoke(Context); - - // Assert - Assert.Empty(CapturedHeaders); - } } }