79494821

Date: 2025-03-08 18:20:35
Score: 0.5
Natty:
Report link

To fix it I have to create my subsegment and add the trace ID in the right format, this documentation helps me to find this missing part.

this is the final code:

    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        string traceId = AWSXRayRecorder.Instance.GetEntity()?.TraceId ?? "Not Available";
        AWSXRayRecorder.Instance.BeginSubsegment($"HttpRequest-{request.RequestUri}");

        try
        {
            _logger.LogInformation("XRayTracingHandler - Sending request to {Url}", request.RequestUri);

            var entity = AWSXRayRecorder.Instance.GetEntity();
            if (entity != null)
            {
                if (!request.Headers.Contains("X-Amzn-Trace-Id"))
                {
                    var subsegmentId = entity.Id;
                    var sampled = AWSXRayRecorder.Instance.IsTracingDisabled() ? "0" : "1";
                    var traceHeader = $"Root={traceId};Parent={subsegmentId};Sampled={sampled}";

                    request.Headers.Add("X-Amzn-Trace-Id", traceHeader);
                }
            }

            var response = await base.SendAsync(request, cancellationToken);
            AWSXRayRecorder.Instance.AddAnnotation("HttpRequest", request.RequestUri?.ToString() ?? "Unknown");
            AWSXRayRecorder.Instance.AddAnnotation("HttpStatus", response.StatusCode.ToString());

            return response;
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "XRayTracingHandler - Exception occurred");
            AWSXRayRecorder.Instance.AddException(ex);
            throw;
        }
        finally
        {
            AWSXRayRecorder.Instance.EndSubsegment();
        }
    }
Reasons:
  • Blacklisted phrase (1): this document
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (0.5):
Posted by: Marco Nuñez