2012-03-28 33 views
8

Lưu ý rằng đây là cho một ApiController trong MVC 4 mặc dù tôi nghĩ rằng nó không nên thay đổi bất cứ điều gì.Cách đúng để tăng ngoại lệ trong một ASP.NET MVC 4 ActionFilterAttribute

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. 
       } 
     }   
} 

Trả lời

11

Bạn có thể thiết lập thuộc tính kết quả của HttpActionContext:

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

bạn có thể có lẽ chỉ ném:

throw new HttpResponseException(HttpStatusCode.Unauthorized); 

nhưng tôi đã không kiểm tra rằng một.

+0

Việc ném 'HttpResponseException' không ** không ** hoạt động, vì nó nằm trong API Web, chứ không phải MVC. Vì vậy, nó sẽ được xử lý bởi MVC như bất kỳ ngoại lệ unhandled dẫn đến một HTTP 500. –

+0

Trong MVC bạn có thể sử dụng 'return new HttpStatusCodeResult (HttpStatusCode.Unauthorized);' trong một Action – bnu

Các vấn đề liên quan