2012-07-16 22 views

Respuesta

22
  1. Los filtros son más acercamiento MVC de hacer cosas mientras que Http Module son más de ASP.NET manera de hacer las cosas. Ambos tienen un propósito similar al proporcionar gancho en la línea de procesamiento.

  2. HttpModule es más genérico y cuando desea que se procese algo en cada solicitud. Los filtros son útiles para agregar comportamiento específico de acción.

  3. Si desea que algo se ejecute solo una vez por solicitud de Http, debe usar un HttpModule. ActionFilter puede ejecutarse varias veces durante una solicitud hasta y a menos que marque IsChildActionOn.

1

HttpModule es la forma de IIS permite que una aplicación Web para anular el comportamiento por defecto o añadir lógica personalizada, ya que permite asociar controladores de eventos a HttpApplication eventos. Diferentes modos IIS (integrados o clásicos) incluso el uso tiene diferentes configuraciones de Web.config.
Referencia:
http://msdn.microsoft.com/en-us/library/ms227673(v=vs.100).aspx

Ejemplo: redirigir no www a las 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(); 
    } 
} 

Un acción de filtrado es un atributo decorar controladores o métodos de acción. Es una capa de abstracción entre el enrutamiento MVC y los métodos de acción. Con filtros de acción, podemos aplicar la misma lógica a múltiples controladores o métodos de acción. por ejemplo, registro personalizado.

2

Se llama a HttpModule antes y después de que se ejecute el controlador de solicitudes. Están destinados a permitir que un desarrollador intercepte, participe o modifique cada solicitud. Hay 22 eventos disponibles que pueden suscribirse para que el módulo pueda trabajar en la solicitud en varias etapas del proceso. Los eventos son útiles para desarrolladores de páginas que desean ejecutar código cuando se generan eventos de interconexión de solicitudes de claves. También son útiles si está desarrollando un módulo personalizado y desea que se invoque el módulo para todas las solicitudes a la canalización.

Los filtros están diseñados para inyectar lógica entre el ciclo de vida de solicitud de MVC. Específicamente, se invoca antes y después de la acción, así como, antes y después de que se procese el resultado. Los filtros brindan a los usuarios formas poderosas de inspeccionar, analizar, capturar e instrumentar varias cosas dentro de los proyectos de MVC. A partir de MVC5, hay 5 tipos de filtros:

  • autenticación
  • Autorización
  • Acción
  • Resultado
  • Excepción

Así que si quieres para interceptar, participar, o modificar en un específico de 22 events in the http request pipeline elegir los módulos .Si la lógica se está estrictamente relacionado con el método de acción es mejor que el servidor anulando uno de los siguientes métodos ActionFilterAttribute:

  • OnActionExecuting
  • OnActionExecutted
  • OnResultExecuting
  • OnResultExecuted
Cuestiones relacionadas