我有一个关于在我的 MVC 5 应用程序中使用 HandleErrorAttribute 的最佳方式的问题。众所周知,我们可以像这样将此属性添加到全局过滤器中:
filters.Add(new HandleErrorAttribute{View = "Error"});
这涉及到应用程序每次在任何级别的应用程序中引发未处理的异常时都显示“错误”视图。但是,如果我在另一个全局授权或操作过滤器中有一些逻辑,会产生一些异常,那么当第一次抛出异常时,应用程序会尝试重定向到错误视图,其他过滤器再次开始执行并产生相同的异常同样,为了避免循环,asp.net 会终止应用程序。那么使用这个 HandleErrorAttribute 来避免这种行为的最佳方法是什么?谢谢!
编辑: 经过一些调试,我发现这不是 HandleErrorAttribute 的常见行为,所以只有当我使用自定义路由 fe 时才会发生循环
{key}/{controller}/{action}
并且当过滤器逻辑中发生一些错误时,应用程序会尝试重定向到错误视图,但另一个过滤器逻辑再次开始执行,我什至在 {key} 路由参数中看到“错误”值,所以它是不需要的行为。当我使用默认路由时,{controller}/{action}
这不会发生,并且我无需再次执行任何全局过滤器逻辑即可完全进入错误视图。