private void OnHostingHttpRequestInStart(object arg) { var httpContext = (HttpContext)HttpRequestInStartHttpContextFetcher.Fetch(arg); if (ShouldIgnore(httpContext)) { if (_isLogLevelDebugEnabled) { Log.Debug("Ignoring request"); } } else { HttpRequest request = httpContext.Request; string host = request.Host.Value; string httpMethod = request.Method?.ToUpperInvariant() ?? "UNKNOWN"; string url = GetUrl(request); string resourceUrl = UriHelpers.GetRelativeUrl(new Uri(url), tryRemoveIds: true) .ToLowerInvariant(); SpanContext propagatedContext = ExtractPropagatedContext(request); Span span = _tracer.StartSpan(HttpRequestInOperationName, propagatedContext) .SetTag(Tags.InstrumentationName, ComponentName); IPAddress remoteIp = null; if (Trace.Tracer.Instance.Settings.AddClientIpToServerSpans) { remoteIp = httpContext?.Connection?.RemoteIpAddress; } span.DecorateWebServerSpan(null, httpMethod, host, url, remoteIp); span.SetTag(Tags.InstrumentationName, IntegrationName); // set analytics sample rate if enabled var analyticsSampleRate = _tracer.Settings.GetIntegrationAnalyticsSampleRate(IntegrationName, enabledWithGlobalSetting: true); span.SetMetric(Tags.Analytics, analyticsSampleRate); Scope scope = _tracer.ActivateSpan(span); _options.OnRequest?.Invoke(scope.Span, httpContext); } }