0

我正在使用流行的Elmah.MVC错误记录 NuGet 包。所以我可以导航到 /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.
    }
}
4

1 回答 1

0

解决方案是检查正在执行的 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;
        }
    }
}
于 2015-05-21T09:06:36.400 回答