using Microsoft.AspNetCore.Http; namespace Core.Blueprint.External { public sealed class TrackingMechanismExtension(IHttpContextAccessor httpContextAccessor) : DelegatingHandler { private readonly IHttpContextAccessor _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { if (_httpContextAccessor.HttpContext != null) { request.Headers.Add("TrackingId", Guid.NewGuid().ToString()); } return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); } } }