c# - 如何捕获 .NET 的 MVC 中的过滤器抛出的异常?

标签 c# .net model-view-controller exception filter

我正在开发的应用程序中的一个过滤器会检查用户是否拥有他们试图更改的项目。该操作由 [RequiresOwnership] 属性修饰,在属性逻辑内部,我检查用户是否拥有该项目,如果没有,我抛出一个 UnauthorizedAccessException.

我的问题是:我在哪里可以捕获该异常?理想情况下,我希望将用户重定向到一个页面,解释为什么不允许他们尝试做的事情,而不是仅仅显示一个异常页面。我不认为我会在由属性修饰的操作中捕获异常,那么在 .NET MVC 模型中是否有应用程序的一些基础部分可以处理更高层抛出的异常?

编辑:我意识到我可以通过过滤器本身重定向到一个页面,但这对我来说似乎有点老套。如果能通过属性抛出异常,并有一个可以捕获和处理它们的标准位置,那就太好了。

最佳答案

我认为您想要的是 Controller 上的 [HandleError] 属性,它采用错误处理程序 View 的可选路径。默认是~/Views/Shared/Error.aspx;您可以在那里为您的特定异常添加额外的支持。

关于c# - 如何捕获 .NET 的 MVC 中的过滤器抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/674816/

相关文章:

c# - 使用 C#,如何检查计算机帐户是否在事件目录中被禁用?

c# - foreach 循环 GroupBox 中的 TextBox 以相反的顺序迭代?

c# - 如何使用 AfterMap 将属性映射到集合属性

c# - Enumerable.Cast<T> 扩展方法无法从 int 转换为 long,为什么?

c# - AJAX 脚本管理器 PageMethod 并不总是被调用

c# - 当 C# 函数参数包含 `= null` 时,这意味着什么?

c# - 从 UserAgent 字符串创建 HttpBrowserCapabilitiesBase

java - JSF Controller 与 Struts Controller

php - 我可以从 View 中调用模型吗?

wcf - 我如何在 MVC 中使用我的 Web 引用?