Capture el nombre de usuario con log4net

Actualmente escribo todos los eventos log4net en una base de datos, y parece funcionar bien. Para capturar la cuenta de usuario conectada utilizo este código:

HttpContext context = HttpContext.Current;
if (context != null && context.User != null && context.User.Identity.IsAuthenticated)
{
    MDC.Set("user", HttpContext.Current.User.Identity.Name);
}

El código parece correcto, excepto para eventos que no tienen un contexto de usuario asociado con ellos (es decir, un usuario en nuestra página web pública). En ese caso, la captura de log4net parece en algún momento escribir la última cuenta de usuario registrada (incorrecta) y en algún momento escribir un valor nulo (bueno). ¿Alguien tiene esta función para funcionar de manera confiable en todos los casos? Creo que vi una nota de que MDC ya no es una característica recomendada para usar, pero no pude encontrar ninguna alternativa recomendada.

Nota: Me parece extraño que MDC esté configurado con un nombre de cuenta, pero nunca se borra si ningún usuario está activo. Eso podría ser parte del problema. Sin embargo, no encontré ningún extracto de código MDC que también borre el nombre de usuario.

Respuestas a la pregunta(6)

Su respuesta a la pregunta