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);
                }
        }