我的ASP.NET MVC3应用程序中有一个自定义操作过滤器(AuthenticateAttribute),可以确保用户登录。
我希望在OnActionExecuting方法中引发异常,并希望由HandleError全局筛选器处理这些异常。这是可能的吗?如果可能,我该怎么做?
目前,在OnActionExecuting中引发异常绕过了HandleError全局过滤器-可能是因为它只捕获操作本身中发生的异常。
发布于 2011-09-12 22:38:46
全局HandleErrorAttribute将处理OnActionExecuting中抛出的异常。您只需确保在您的web.config中启用了它:
<customErrors mode="On" />这就是说,您谈到了AuthenticateAttribute和OnActionExecuting事件。这两个概念是不相容的。如果您正在编写自定义授权属性,那么您可能会从AuthorizeAttribute派生,并覆盖用于身份验证的AuthorizeCore方法和用于处理未经授权的情况的HandleUnauthorizedRequest方法。
如果您不想使用全局HandleErrorAttribute来执行以下操作,而不是抛出异常,您也可以这样做:
filterContext.Result = new ViewResult
{
ViewName = "~/Views/Shared/401.cshtml"
};在操作属性中设置结果将缩短控制器操作的执行过程,并直接呈现视图。
https://stackoverflow.com/questions/7389449
复制相似问题