diff --git a/tracer/src/Datadog.Trace/AppSec/CoreHttpContextStore.cs b/tracer/src/Datadog.Trace/AppSec/CoreHttpContextStore.cs index 4f670ab0e692..c6713f3052ec 100644 --- a/tracer/src/Datadog.Trace/AppSec/CoreHttpContextStore.cs +++ b/tracer/src/Datadog.Trace/AppSec/CoreHttpContextStore.cs @@ -23,7 +23,7 @@ internal class CoreHttpContextStore public static readonly CoreHttpContextStore Instance = new(); - private readonly AsyncLocal _localStore = new(); + private readonly AsyncLocal _localStore = new(); public HttpContext? Get() { @@ -36,6 +36,8 @@ internal class CoreHttpContextStore } public void Set(HttpContext context) => _localStore.Value = context; + + public void Remove() => _localStore.Value = null; } } diff --git a/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs b/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs index e6d2f9bf782d..d2ca1ecd5f62 100644 --- a/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs +++ b/tracer/src/Datadog.Trace/DiagnosticListeners/AspNetCoreDiagnosticObserver.cs @@ -670,6 +670,8 @@ private void OnHostingHttpRequestInStop(object arg) AspNetCoreRequestHandler.StopAspNetCorePipelineScope(tracer, CurrentSecurity, rootScope, httpContext); } + CoreHttpContextStore.Instance.Remove(); + // If we don't have a scope, no need to call Stop pipeline } @@ -689,6 +691,8 @@ private void OnHostingUnhandledException(object arg) AspNetCoreRequestHandler.HandleAspNetCoreException(tracer, CurrentSecurity, rootSpan, httpContext, unhandledStruct.Exception); } + CoreHttpContextStore.Instance.Remove(); + // If we don't have a span, no need to call Handle exception }