Elmah不会在HttpRequestValidationException中保存用户名

时间:2015-04-19 12:30:57

标签: c# asp.net-mvc asp.net-mvc-5 elmah

我使用此过滤器在Elmah中记录HttpRequestValidationException:

public class ElmahRequestValidationErrorFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        if (context.Exception is HttpRequestValidationException)
            Elmah.ErrorSignal.FromCurrentContext().Raise(context.Exception.InnerException);
    }
}

我在FilterConfig.cs中注册了这个过滤器:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new ElmahRequestValidationErrorFilter());
        filters.Add(new HandleErrorAttribute());
    }
}

但是当发生此错误时,经过身份验证的用户的UserName不会保存在用户列的elmah日志中。但在其他错误中,它的剂量工作正常。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Elmah中的

用户列是空的,因为Elmah从

获取用户名
Thread.CurrentPrincipal.Identity.Name

您可以在Elmah记录错误之前设置当前用户。

try 
{

}
catch(Exception ex)
{
 string userName = "username1";  
 string[] roles = { "" };
 Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(userName), roles);
 ErrorSignal.FromCurrentContext().Raise(ex);
}