asp.net-mvc - MVC GlobalFilters 未触发

标签 asp.net-mvc asp.net-mvc-4

我有这个

public class ExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        Exception exception = context.Exception;
        if (!(exception is HttpException))
        {
           Trace.TraceError("ExceptionFilter: " + ExceptionUtilities.GetFullExceptionMessage(exception));
           Trace.Flush();
        }
    }
}

这在 global.asax

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new Filters.ExceptionFilter());
    filters.Add(new HandleErrorAttribute());
}

但是当我通过创建这样的危险请求来触发错误

example.com/dsfgds:dfgd

我遇到异常:

A potentially dangerous Request.Path value was detected from the client (:)

过滤器不会触发,内部断点也不会被命中。

最佳答案

那是因为您正在使用 MVC 注册一个 IExceptionFilter ,因此它只会捕获 MVC Action 中引发的未处理的异常(我认为可能是其他 MVC 过滤器?不要引用我对此)。但有关潜在危险请求的错误是 ASP.NET 错误,该请求从未发送到 MVC,因此永远不会调用 MVC 错误过滤器。同样,任何 IIS 级别的错误也不会由此处理。对于非 MVC 错误,您仍然需要监视 Application_OnError 事件。或者对于像 Elmah 这样的异常处理程序,让它为您监视事件。

关于asp.net-mvc - MVC GlobalFilters 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16026203/

相关文章:

jquery - 鼠标悬停 Mouseout 在 Firefox 中不起作用

c# - 带有 Newtonsoft 的 ASP.NET MVC 将对象从 Controller 传递到 View

jquery Ajax从 View 到 Controller 方法调用,但不显示在mvc中返回该方法的 View

asp.net-mvc - 使用 MVC 和图像(像素)跟踪电子邮件

c# - 在 Azure 中部署 MVC 站点时出错

javascript - ASP.NET MVC Scripts.Render 不合并文件..?

javascript - 如何使用 AJAX 发布数据来更新我的 MVC View

c# - asp.net-mvc 路由 : The resource cannot be found

c# - 无法加载文件或程序集 CrystalDecisions.ReportAppServer.ClientDoc

c# - 在 MVC 应用程序中使用 await Task<T> async 挂起 Controller