我正在开发的应用程序中的一个过滤器会检查用户是否拥有他们试图更改的项目。该操作由 [RequiresOwnership]
属性修饰,在属性逻辑内部,我检查用户是否拥有该项目,如果没有,我抛出一个 UnauthorizedAccessException
.
我的问题是:我在哪里可以捕获该异常?理想情况下,我希望将用户重定向到一个页面,解释为什么不允许他们尝试做的事情,而不是仅仅显示一个异常页面。我不认为我会在由属性修饰的操作中捕获异常,那么在 .NET MVC 模型中是否有应用程序的一些基础部分可以处理更高层抛出的异常?
编辑:我意识到我可以通过过滤器本身重定向到一个页面,但这对我来说似乎有点老套。如果能通过属性抛出异常,并有一个可以捕获和处理它们的标准位置,那就太好了。
最佳答案
我认为您想要的是 Controller 上的 [HandleError] 属性,它采用错误处理程序 View 的可选路径。默认是~/Views/Shared/Error.aspx;您可以在那里为您的特定异常添加额外的支持。
关于c# - 如何捕获 .NET 的 MVC 中的过滤器抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/674816/