public async Task InvokeAsync(HttpContext context) { var requestInfo = FlowingContext.Globals.Get <IRequestInfo>(); using (var spanBuilder = tracer.BeginHttpServerSpan()) using (new OperationContextToken( TracingLogPropertiesFormatter.FormatPrefix( spanBuilder.CurrentSpan.ParentSpanId ?? spanBuilder.CurrentSpan.SpanId) ?? string.Empty)) { spanBuilder.SetClientDetails(requestInfo?.ClientApplicationIdentity, requestInfo?.ClientIpAddress); spanBuilder.SetRequestDetails(context.Request.Path, context.Request.Method, context.Request.ContentLength); SetResponseHeaderIfRequired(context, spanBuilder); await next(context); SetResponseHeaderIfRequired(context, spanBuilder); spanBuilder.SetResponseDetails(context.Response.StatusCode, context.Response.ContentLength); } }