Как заставить 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;
        }
    }
}
Другие вопросы по тегам