HostingApplicationDiagnostics resolve Request.Headers once (#9605)

This commit is contained in:
Ben Adams 2019-04-21 04:41:49 +01:00 committed by David Fowler
parent 24ab62108e
commit b893777898
1 changed files with 5 additions and 4 deletions

View File

@ -233,22 +233,23 @@ namespace Microsoft.AspNetCore.Hosting.Internal
{
var activity = new Activity(ActivityName);
if (!httpContext.Request.Headers.TryGetValue(HeaderNames.TraceParent, out var requestId))
var headers = httpContext.Request.Headers;
if (!headers.TryGetValue(HeaderNames.TraceParent, out var requestId))
{
httpContext.Request.Headers.TryGetValue(HeaderNames.RequestId, out requestId);
headers.TryGetValue(HeaderNames.RequestId, out requestId);
}
if (!StringValues.IsNullOrEmpty(requestId))
{
activity.SetParentId(requestId);
if (httpContext.Request.Headers.TryGetValue(HeaderNames.TraceState, out var traceState))
if (headers.TryGetValue(HeaderNames.TraceState, out var traceState))
{
activity.TraceStateString = traceState;
}
// We expect baggage to be empty by default
// Only very advanced users will be using it in near future, we encourage them to keep baggage small (few items)
string[] baggage = httpContext.Request.Headers.GetCommaSeparatedValues(HeaderNames.CorrelationContext);
string[] baggage = headers.GetCommaSeparatedValues(HeaderNames.CorrelationContext);
if (baggage.Length > 0)
{
foreach (var item in baggage)