2012-07-16 37 views

Trả lời

22
  1. Bộ lọc có nhiều cách tiếp cận MVC hơn khi làm việc trong khi Mô-đun Http có nhiều cách thức hoạt động của ASP.NET hơn. Cả hai đều phục vụ mục đích tương tự bằng cách cung cấp móc trong đường ống xử lý.

  2. HttpModule là tổng quát hơn và khi bạn muốn một số thứ được xử lý theo mọi yêu cầu. Bộ lọc hữu ích cho việc thêm hành vi cụ thể của hành động.

  3. Nếu bạn muốn thực hiện một số điều chỉ một lần cho mỗi yêu cầu Http, bạn nên sử dụng HttpModule. ActionFilter có thể được thực hiện nhiều lần trong một yêu cầu cho đến khi và trừ khi bạn kiểm tra IsChildActionOn.

1

HttpModule là cách IIS cho phép một ứng dụng Web để ghi đè lên hành vi mặc định hoặc thêm logic tùy chỉnh bằng cách cho phép bạn đính kèm xử lý sự kiện để HttpApplication sự kiện. Các chế độ IIS khác nhau (Tích hợp hoặc Cổ điển) thậm chí sử dụng có các cài đặt Web.config khác nhau.
tham khảo:
http://msdn.microsoft.com/en-us/library/ms227673(v=vs.100).aspx

Ví dụ: chuyển hướng phi www URL www

public void Init(HttpApplication application) 
{ 
    application.PreRequestHandlerExecute += this.Application_PreRequestHandlerExecute; 
} 

private void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    Uri requestUrl = HttpContext.Current.Request.Url; 
    string host = requestUrl.Authority.ToLower(); 
    if (!host.StartsWith("www")) 
    { 
     HttpContext.Current.Response.Redirect(requestUrl.Scheme + "://www." + host + requestUrl.PathAndQuery); 
     HttpContext.Current.Response.End(); 
    } 
} 

Một Filter Action là một thuộc tính trang trí bộ điều khiển hoặc các phương pháp hành động. Nó là một lớp trừu tượng giữa các phương thức định tuyến và hành động MVC. Với các bộ lọc hành động, chúng ta có thể áp dụng cùng một logic cho nhiều bộ điều khiển hoặc các phương thức hành động. ví dụ: ghi nhật ký tùy chỉnh.

2

HttpModule được gọi trước và sau khi trình xử lý yêu cầu thực thi. Chúng được thiết kế để cho phép nhà phát triển chặn, tham gia hoặc sửa đổi từng yêu cầu. Có 22 sự kiện có sẵn có thể được đăng ký để cho phép mô-đun hoạt động theo yêu cầu trong các giai đoạn khác nhau của quy trình. Các sự kiện này rất hữu ích cho các nhà phát triển trang, những người muốn chạy mã khi các sự kiện đường ống yêu cầu quan trọng được nâng lên. Chúng cũng hữu ích nếu bạn đang phát triển một mô-đun tùy chỉnh và bạn muốn mô-đun được gọi cho tất cả các yêu cầu đến đường dẫn.

Bộ lọc được thiết kế để chèn logic vào giữa vòng đời yêu cầu MVC. Cụ thể trước và sau khi hành động được gọi, cũng như, trước và sau khi kết quả được xử lý. Bộ lọc cung cấp cho người dùng các cách mạnh mẽ để kiểm tra, phân tích, chụp và sử dụng một số thứ xung quanh trong các dự án MVC. Tính đến MVC5, có 5 loại bộ lọc:

  • Xác thực
  • Authorization
  • Action
  • quả
  • Exception

Vì vậy, nếu bạn muốn chặn, tham gia, hoặc sửa đổi cụ thể trong số 22 events in the http request pipeline chọn mô-đun.Nếu logic của bạn là có liên quan chặt chẽ với phương pháp hành động mà bạn máy chủ tốt hơn trọng một trong những phương pháp ActionFilterAttribute sau:

  • OnActionExecuting
  • OnActionExecutted
  • OnResultExecuting
  • OnResultExecuted
Các vấn đề liên quan