diff --git a/WEB/Src/Web/Web/AccountIdActivityProcessor.cs b/WEB/Src/Web/Web/AccountIdActivityProcessor.cs
index 9b23c6b6f..e2786bb4f 100644
--- a/WEB/Src/Web/Web/AccountIdActivityProcessor.cs
+++ b/WEB/Src/Web/Web/AccountIdActivityProcessor.cs
@@ -33,7 +33,8 @@ public override void OnEnd(Activity activity)
}
var context = HttpContext.Current;
- if (context == null)
+ var request = context.GetRequest();
+ if (request == null)
{
return;
}
@@ -42,7 +43,7 @@ public override void OnEnd(Activity activity)
var existingAccountId = activity.GetTagItem("enduser.id");
if (existingAccountId == null || string.IsNullOrEmpty(existingAccountId.ToString()))
{
- var authUserCookie = context.Request.UnvalidatedGetCookie(RequestTrackingConstants.WebAuthenticatedUserCookieName);
+ var authUserCookie = request.UnvalidatedGetCookie(RequestTrackingConstants.WebAuthenticatedUserCookieName);
if (authUserCookie != null && !string.IsNullOrEmpty(authUserCookie.Value))
{
var authUserCookieString = HttpUtility.UrlDecode(authUserCookie.Value);
diff --git a/WEB/Src/Web/Web/AuthenticatedUserIdActivityProcessor.cs b/WEB/Src/Web/Web/AuthenticatedUserIdActivityProcessor.cs
index d5118c688..f340cdc69 100644
--- a/WEB/Src/Web/Web/AuthenticatedUserIdActivityProcessor.cs
+++ b/WEB/Src/Web/Web/AuthenticatedUserIdActivityProcessor.cs
@@ -31,7 +31,8 @@ public override void OnEnd(Activity activity)
}
var context = HttpContext.Current;
- if (context == null)
+ var request = context.GetRequest();
+ if (request == null)
{
return;
}
@@ -40,7 +41,7 @@ public override void OnEnd(Activity activity)
var existingUserId = activity.GetTagItem("enduser.id");
if (existingUserId == null || string.IsNullOrEmpty(existingUserId.ToString()))
{
- var authUserCookie = context.Request.UnvalidatedGetCookie(RequestTrackingConstants.WebAuthenticatedUserCookieName);
+ var authUserCookie = request.UnvalidatedGetCookie(RequestTrackingConstants.WebAuthenticatedUserCookieName);
if (authUserCookie != null && !string.IsNullOrEmpty(authUserCookie.Value))
{
var authUserCookieString = HttpUtility.UrlDecode(authUserCookie.Value);
diff --git a/WEB/Src/Web/Web/ClientIpHeaderActivityProcessor.cs b/WEB/Src/Web/Web/ClientIpHeaderActivityProcessor.cs
index 686bd7cc7..437bee5ca 100644
--- a/WEB/Src/Web/Web/ClientIpHeaderActivityProcessor.cs
+++ b/WEB/Src/Web/Web/ClientIpHeaderActivityProcessor.cs
@@ -77,7 +77,8 @@ public override void OnEnd(Activity activity)
}
var context = HttpContext.Current;
- if (context == null)
+ var request = context.GetRequest();
+ if (request == null)
{
return;
}
@@ -90,10 +91,10 @@ public override void OnEnd(Activity activity)
foreach (var clientIpHeaderName in this.HeaderNames)
{
// Try Unvalidated first, fall back to regular Headers for test environments
- var clientIpsFromHeader = context.Request.UnvalidatedGetHeader(clientIpHeaderName);
+ var clientIpsFromHeader = request.UnvalidatedGetHeader(clientIpHeaderName);
if (string.IsNullOrWhiteSpace(clientIpsFromHeader))
{
- clientIpsFromHeader = context.Request.Headers[clientIpHeaderName];
+ clientIpsFromHeader = request.Headers[clientIpHeaderName];
}
if (!string.IsNullOrWhiteSpace(clientIpsFromHeader))
@@ -111,7 +112,7 @@ public override void OnEnd(Activity activity)
if (string.IsNullOrEmpty(resultIp))
{
- resultIp = context.Request.GetUserHostAddress();
+ resultIp = request.GetUserHostAddress();
}
if (!string.IsNullOrEmpty(resultIp))
diff --git a/WEB/Src/Web/Web/Implementation/HttpContextExtensions.cs b/WEB/Src/Web/Web/Implementation/HttpContextExtensions.cs
index 5bb94c5a8..f0e921070 100644
--- a/WEB/Src/Web/Web/Implementation/HttpContextExtensions.cs
+++ b/WEB/Src/Web/Web/Implementation/HttpContextExtensions.cs
@@ -11,12 +11,28 @@ internal static class HttpContextExtensions
{
///
/// Gets the HttpRequest from the HttpContext.
+ /// Returns null if no request is available (e.g., when called outside of a
+ /// request context such as during Application_Start), in which case
+ /// throws .
///
/// The HttpContext.
- /// The HttpRequest.
+ /// The HttpRequest, or null if not available.
public static HttpRequest GetRequest(this HttpContext context)
{
- return context?.Request;
+ if (context == null)
+ {
+ return null;
+ }
+
+ try
+ {
+ return context.Request;
+ }
+ catch (HttpException)
+ {
+ // "Request is not available in this context" — e.g., Application_Start.
+ return null;
+ }
}
///
@@ -26,12 +42,12 @@ public static HttpRequest GetRequest(this HttpContext context)
/// The request name in format "VERB Controller/Action" or "VERB Path".
public static string CreateRequestNamePrivate(this HttpContext context)
{
- if (context?.Request == null)
+ var request = context.GetRequest();
+ if (request == null)
{
return string.Empty;
}
- var request = context.Request;
string verb = request.HttpMethod ?? "GET";
// Try to get controller and action from route data
diff --git a/WEB/Src/Web/Web/SessionActivityProcessor.cs b/WEB/Src/Web/Web/SessionActivityProcessor.cs
index 594d4d892..b067dce4f 100644
--- a/WEB/Src/Web/Web/SessionActivityProcessor.cs
+++ b/WEB/Src/Web/Web/SessionActivityProcessor.cs
@@ -35,7 +35,8 @@ public override void OnEnd(Activity activity)
}
var context = HttpContext.Current;
- if (context == null)
+ var request = context.GetRequest();
+ if (request == null)
{
return;
}
@@ -45,7 +46,7 @@ public override void OnEnd(Activity activity)
if (existingSessionId == null || string.IsNullOrEmpty(existingSessionId.ToString()))
{
// Try Unvalidated first, fall back to regular Cookies for test environments
- var sessionCookie = context.Request.UnvalidatedGetCookie(WebSessionCookieName) ?? context.Request.Cookies[WebSessionCookieName];
+ var sessionCookie = request.UnvalidatedGetCookie(WebSessionCookieName) ?? request.Cookies[WebSessionCookieName];
if (sessionCookie != null && !string.IsNullOrWhiteSpace(sessionCookie.Value))
{
var parts = sessionCookie.Value.Split('|');
diff --git a/WEB/Src/Web/Web/UserActivityProcessor.cs b/WEB/Src/Web/Web/UserActivityProcessor.cs
index c07853a7e..58bc86d27 100644
--- a/WEB/Src/Web/Web/UserActivityProcessor.cs
+++ b/WEB/Src/Web/Web/UserActivityProcessor.cs
@@ -33,7 +33,8 @@ public override void OnEnd(Activity activity)
}
var context = HttpContext.Current;
- if (context == null)
+ var request = context.GetRequest();
+ if (request == null)
{
return;
}
@@ -43,7 +44,7 @@ public override void OnEnd(Activity activity)
if (existingUserId == null || string.IsNullOrEmpty(existingUserId.ToString()))
{
// Try Unvalidated first, fall back to regular Cookies for test environments
- var userCookie = context.Request.UnvalidatedGetCookie(WebUserCookieName) ?? context.Request.Cookies[WebUserCookieName];
+ var userCookie = request.UnvalidatedGetCookie(WebUserCookieName) ?? request.Cookies[WebUserCookieName];
if (userCookie != null && !string.IsNullOrEmpty(userCookie.Value))
{
var cookieParts = userCookie.Value.Split('|');