在ASP.NET MVC 4 ActionFilterAttribute中引发异常的正确方法

Luk*_*ina 9 c# asp.net-mvc-3

请注意,这是针对MVC 4中的ApiController,尽管我认为它不应该改变任何东西.

 public class OAuthFilter : System.Web.Http.ActionFilterAttribute
 {
       public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
       {
              if (checkVerified())
              {
                   // How to raise a 401 or some other type of exception.
              }
       }        
 }
Run Code Online (Sandbox Code Playgroud)

veb*_*ock 13

您可以设置以下的结果属性HttpActionContext:

public override void OnActionExecuting(HttpActionContext actionContext)
{
    if (checkVerified())
    {
        actionContext.Response = 
            new HttpResponseMessage(HttpStatusCode.Unauthorized);
    }
}
Run Code Online (Sandbox Code Playgroud)

你可能只是扔:

throw new HttpResponseException(HttpStatusCode.Unauthorized);
Run Code Online (Sandbox Code Playgroud)

但我没有检查那个.