gpt4 book ai didi

c# - 在 ASP.NET MVC 应用程序中使用 HandleErrorAttribute

转载 作者:可可西里 更新时间:2023-11-01 09:06:19 25 4
gpt4 key购买 nike

我对在我的 MVC 5 应用程序中使用 HandleErrorAttribute 的最佳方式有疑问。正如我们所知,我们可以像这样将此属性添加到全局过滤器:

 filters.Add(new HandleErrorAttribute{View = "Error"});

这涉及应用程序在任何级别的应用程序中每次抛出未处理的异常时显示“错误” View 。但是,如果我在另一个全局授权或操作过滤器中有一些逻辑会产生一些异常,那么当第一次抛出异常时,应用程序会尝试重定向到错误 View ,其他过滤器再次开始执行并产生相同的异常再次,所以 asp.net 避免循环终止应用程序。那么使用此 HandleErrorAttribute 来避免此类行为的最佳方法是什么?谢谢!

编辑:经过一些调试后,我发现这不是 HandleErrorAttribute 的通常行为,因此仅当我使用自定义路由 f.e. 时才会发生循环

{key}/{controller}/{action}

当过滤器逻辑中出现错误时,应用程序会尝试重定向到错误 View ,但另一个过滤器逻辑又开始执行,我什至在 {key} 路由参数中看到“错误”值,所以这是不受欢迎的行为。当我使用默认路由 {controller}/{action}这并没有发生,我没有再次执行任何全局过滤器逻辑就进入了错误 View 。

最佳答案

您应该将 Action 过滤器逻辑包装在 try catch 中,然后在 catch block 中,重定向到 Error 查看并传递 Exception

您唯一的另一种选择是完全放弃 HandleError 并使用 Global.asax 中的 Application_Error 事件来管理您的错误处理。这样你就可以重定向到里面的 Error 操作,而不管错误发生在哪里。

关于c# - 在 ASP.NET MVC 应用程序中使用 HandleErrorAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19025999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com