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

Но когда эта ошибка , UserName пользователя, прошедшего проверку подлинности, не сохраняется в журналах elmah на столбце пользователя. Но в других ошибках это работает с ошибкой. Как я могу исправить эту проблему?

+0

Является ли ошибка регистрируемой вообще? Я просто попытался воссоздать вашу настройку, но в моем случае имя пользователя успешно зарегистрировано. – ThomasArdal

+0

Также имейте в виду, что ELMAH не поддерживает повышение нуля в качестве исключения. Это означает, что если InnerException имеет значение NULL, ваш фильтр сам выдаст исключение, и исходная ошибка никогда не будет регистрироваться в вашем журнале ELMAH. – ThomasArdal

+0

Я попытался использовать context.Exception, но опять же не поднять имя пользователя ... – BlackViking

ответ

0

колонок пользователя в Elmah пуст becuase 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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^