public class TenantMessageHandler : DelegatingHandler { private readonly IServiceProvider _provider; public TenantMessageHandler(IServiceProvider provider) { _provider = provider; } protected override Task<HttpResponseMessage> SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { var httpContextAccessor = _provider.GetService(typeof(IHttpContextAccessor)) as IHttpContextAccessor; var tenantId = httpContextAccessor.HttpContext.Items["x-tenant-id"] as string; request.Headers.Add("x-tenant-id", tenantId); return base.SendAsync(request, cancellationToken); } } // Usage public void ConfigureServices(IServiceCollection services) { //...other dependencies services.AddHttpClient<ICustomerRepository, CustomerServiceAgent>(opts => { opts.BaseAddress = new Uri("someUrl"); }).AddHttpMessageHandler(() => new TenantMessageHandler(services.BuildServiceProvider())); }