diff --git a/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs b/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs index 7d07dc3572f6..d1f968212647 100644 --- a/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs +++ b/src/Middleware/HeaderPropagation/src/HeaderPropagationMessageHandler.cs @@ -48,8 +48,8 @@ protected override Task SendAsync(HttpRequestMessage reques { 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 585bb914729a..251e324abcfc 100644 --- a/src/Middleware/HeaderPropagation/test/HeaderPropagationIntegrationTest.cs +++ b/src/Middleware/HeaderPropagation/test/HeaderPropagationIntegrationTest.cs @@ -64,10 +64,33 @@ public async Task HeaderPropagation_WithoutMiddleware_Throws() 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() {