Asp.net mvc 4 在ActionFilterAttribute验证时停止响应

Asp.net mvc 4 在ActionFilterAttribute验证时停止响应,asp.net-mvc-4,actionfilterattribute,Asp.net Mvc 4,Actionfilterattribute,我有一个ActionFilterAttribute,在它的OneExecuting事件上,我正在验证请求。 如果这不是授权请求,我会这样做: if(notAuthorized){ filterContext.HttpContext.AddError(new Exception("Invalid Request !!")); } 因此,对于未经授权的请求,它会添加异常并继续执行操作。 我的问题是如何在此时停止处理? 我试过: filterContext.HttpContext.Respons

我有一个ActionFilterAttribute,在它的OneExecuting事件上,我正在验证请求。 如果这不是授权请求,我会这样做:

if(notAuthorized){
  filterContext.HttpContext.AddError(new Exception("Invalid Request !!"));
}
因此,对于未经授权的请求,它会添加异常并继续执行操作。 我的问题是如何在此时停止处理? 我试过:

filterContext.HttpContext.Response.End();
但是没有成功。请回复


检查操作中的错误将是一个选项,但我正在查找操作筛选器本身的更改,这样我们就不需要在每个操作中进行更改。

只需设置
过滤器上下文的
结果即可:

filterContext.Result = new HttpUnauthorizedResult("Invalid Request !!");
如果您只想允许经过身份验证的用户访问,最好使用
Authorize
过滤器

更新:

由于要在授权失败时呈现错误视图,请尝试以下操作:

filterContext.Result = new ViewResult
        {
        ViewName = "{YourErrorViewName}",
        ViewData = { Model = new Exception("Invalid Request !!") }
        }; 

嗨,我刚试过,它返回了我的登录视图。实际上,在这种情况下,我不应该返回login视图(它是一个用于不同用户集的单独控制器,通过cookie进行验证),相反,我可能希望显示一个错误视图。谢谢你的快速回复。