Как заставить ASP.NET MVC IAuthorizationFilter уважать IgnoreRoute's
Я использую популярный пакет NuGet для регистрации ошибок Elmah.MVC. Поэтому я могу перейти к / elmah, чтобы просмотреть мои журналы ошибок. У меня есть следующие операторы IgnoreRoute, так что MVC игнорирует маршрут / elmah:
routes.IgnoreRoute("elmah");
routes.IgnoreRoute("elmah/{*pathinfo}");
Я написал следующий фильтр авторизации. Как я могу остановить выполнение фильтра ниже при переходе к /elmah. Наверняка должен быть какой-то способ, чтобы он уважал маршруты, которые я советую игнорировать?
public class MyFilterAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
// I don't want /elmah routes to execute this.
}
}
1 ответ
Решением было проверить выполняемое имя ControllerName, и если это Elmah, мы возвращаемся и игнорируем этот запрос.
public class MyFilterAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
// I don't want /elmah routes to execute for this filter.
string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
if (string.Equals(controllerName, "Elmah", StringComparison.Ordinal))
{
return;
}
}
}