2015-04-19 25 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); 
}