【发布时间】:2013-09-26 10:41:45
【问题描述】:
我有一个关于在我的 MVC 5 应用程序中使用 HandleErrorAttribute 的最佳方式的问题。 我们知道,我们可以像这样将这个属性添加到全局过滤器中:
filters.Add(new HandleErrorAttribute{View = "Error"});
这涉及到应用程序每次在任何级别的应用程序中引发未处理的异常时都显示“错误”视图。 但是,如果我在另一个全局授权或操作过滤器中有一些逻辑,会产生一些异常,那么当第一次抛出异常时,应用程序会尝试重定向到错误视图,其他过滤器再次开始执行并产生相同的异常同样,为了避免循环,asp.net 会终止应用程序。 那么使用这个 HandleErrorAttribute 来避免这种行为的最佳方法是什么? 谢谢!
编辑: 经过一些调试后,我发现这不是 HandleErrorAttribute 的常见行为,因此只有在我使用自定义路由 f.e. 时才会发生循环。
{key}/{controller}/{action}
当过滤器逻辑发生错误时,应用程序会尝试重定向到错误视图,但另一个过滤器逻辑再次开始执行,我什至在 {key} 路由参数中看到“错误”值,所以这是不受欢迎的行为。
当我使用默认路由{controller}/{action}
这不会发生,我没有第二次执行任何全局过滤器逻辑就直接进入错误视图。
【问题讨论】:
标签: c# asp.net-mvc attributes asp.net-mvc-5