in src/sdk/Utils/AspNetRequestUtil.cs [188:220]
internal static void ProcessHTTPResponse(object sender, EventArgs e)
{
var context = ((HttpApplication)sender).Context;
var response = context.Response;
if (!AWSXRayRecorder.Instance.IsTracingDisabled() && response != null)
{
var responseAttributes = ProcessResponseAttributes(response);
_recorder.AddHttpInformation("response", responseAttributes);
}
Exception exc = context.Error; // Record exception, if any
if (exc != null)
{
_recorder.AddException(exc);
}
TraceHeader traceHeader = GetTraceHeader(context);
bool isSampleDecisionRequested = traceHeader.Sampled == SampleDecision.Requested;
if (traceHeader.Sampled == SampleDecision.Unknown || traceHeader.Sampled == SampleDecision.Requested)
{
SetSamplingDecision(traceHeader); // extracts sampling decision from the available segment
}
_recorder.EndSegment();
// if the sample decision is requested, add the trace header to response
if (isSampleDecisionRequested)
{
response.Headers.Add(TraceHeader.HeaderKey, traceHeader.ToString());
}
}