diff --git a/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs b/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs index 7d07dc3572..d1f9682126 100644 --- a/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs +++ b/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs @@ -48,8 +48,8 @@ namespace Microsoft.AspNetCore.HeaderPropagation { var message = $"The {nameof(HeaderPropagationValues)}.{nameof(HeaderPropagationValues.Headers)} property has not been " + - $"initialized. Register the header propagation middleware by adding 'app.{nameof(HeaderPropagationApplicationBuilderExtensions.UseHeaderPropagation)}() " + - $"in the 'Configure(...)' method."; + $"initialized. Register the header propagation middleware by adding 'app.{nameof(HeaderPropagationApplicationBuilderExtensions.UseHeaderPropagation)}()' " + + $"in the 'Configure(...)' method. Header propagation can only be used within the context of an HTTP request."; throw new InvalidOperationException(message); } diff --git a/src/Middleware/HeaderPropagation/test/HeaderPropagationIntegrationTest.cs b/src/Middleware/HeaderPropagation/test/HeaderPropagationIntegrationTest.cs index 585bb91472..251e324abc 100644 --- a/src/Middleware/HeaderPropagation/test/HeaderPropagationIntegrationTest.cs +++ b/src/Middleware/HeaderPropagation/test/HeaderPropagationIntegrationTest.cs @@ -64,10 +64,33 @@ namespace Microsoft.AspNetCore.HeaderPropagation.Tests Assert.IsType(captured); Assert.Equal( "The HeaderPropagationValues.Headers property has not been initialized. Register the header propagation middleware " + - "by adding 'app.UseHeaderPropagation() in the 'Configure(...)' method.", + "by adding 'app.UseHeaderPropagation()' in the 'Configure(...)' method. Header propagation can only be used within " + + "the context of an HTTP request.", captured.Message); } + [Fact] + public async Task HeaderPropagation_OutsideOfIncomingRequest_Throws() + { + // Arrange + var services = new ServiceCollection(); + services.AddHttpClient("test").AddHeaderPropagation(); + services.AddHeaderPropagation(options => + { + options.Headers.Add("X-TraceId"); + }); + var serviceProvider = services.BuildServiceProvider(); + + // Act & Assert + var client = serviceProvider.GetRequiredService().CreateClient("test"); + var exception = await Assert.ThrowsAsync(() => client.GetAsync("http://localhost/")); + Assert.Equal( + "The HeaderPropagationValues.Headers property has not been initialized. Register the header propagation middleware " + + "by adding 'app.UseHeaderPropagation()' in the 'Configure(...)' method. Header propagation can only be used within " + + "the context of an HTTP request.", + exception.Message); + } + [Fact] public async Task HeaderInRequest_AddCorrectValue() {