2015-04-19 24 views
0

保存的用户名我使用这个过滤器登录HttpRequestValidationException在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()); 
    } 
} 

但是,当这个错误发生,被验证的用户的用户名不会保存在用户列的elmah日志中。但在其他错误中,它的剂量工作正常。 我该如何解决这个问题?监守ELMAH从

Thread.CurrentPrincipal.Identity.Name 

得到的用户名可以设置当前用户ELMAH记录错误之前ELMAH

+0

是否记录了错误?我只是试图重新创建您的设置,但在我的情况下,用户名已成功记录。 – ThomasArdal

+0

另请注意,ELMAH不支持引发null作为例外。这意味着如果InnerException为null,那么您的过滤器本身将引发异常,并且原始错误永远不会记录到您的ELMAH日志中。 – ThomasArdal

+0

我试图context.Exception,但再次没有上升用户名... – BlackViking

回答

0

用户栏是空的。

try 
{ 

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