Estoy desarrollando una aplicación en asp.net MVC3 y tengo las siguientes preguntas: ¿Cuándo debo escribir un módulo HTTP y cuándo debo escribir un filtro de acción?Módulo HTTP frente a filtro de acción en asp.net-mvc
Respuesta
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.
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.
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.
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.
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
- 1. ¿Frente al filtro Bloom?
- 2. Módulo frente a diseño de componentes
- 3. Filtro de acción asíncrono en MVC 4
- 4. Filtro de acción global en ASP.NET MVC
- 5. ASP.NET MVC Pass objeto de acción personalizada Filtro de Acción
- 6. mapa de filtro frente a la lista de comprensión
- 7. Interceptor de primavera frente a filtro de servlet
- 8. Redireccionando al controlador especificado y a la acción en asp.net filtro de acción mvc
- 9. El filtro de App Engine frente a los métodos gql
- 10. Reemplazando un filtro de acción global
- 11. Orden de ejecución del filtro de acción
- 12. ASP.Net MVC Autorización del filtro acción
- 13. Limitación de verbos HTTP en cada acción
- 14. Internet Explorer Caching asp.netmvc ajax results
- 15. C#: delegado de acción frente a delegado explícito
- 16. ¿Cómo hacer para que el filtro redirija a otra acción?
- 17. ¿Cómo redirecciono al usuario a otra acción del controlador desde un filtro de acción ASP.MVC 3?
- 18. Instalación de módulo perl: cpan shell frente a rpm/deb
- 19. Extensión del módulo F # frente a la extensión de tipo
- 20. Minificar atributo de filtro de acción en ASP.NET MVC
- 21. Combinación de AjaxOnlyAttribute y ChildActionOnlyAttribute en un filtro de acción
- 22. API REST: encabezados HTTP personalizados frente a parámetros de URL
- 23. NUnit frente a MbUnit frente a MSTest frente a xUnit.net
- 24. Solicitud HTTP muy grande frente a muchas solicitudes pequeñas
- 25. Filtro inverso de la imagen convolucionada espacialmente frente a la convolucionada en frecuencia
- 26. Obtención de los valores de los parámetros de acción dentro de un filtro de acción
- 27. Capturar resultados HTML con un filtro de acción de controlador
- 28. ¿Puedo devolver un resultado de acción de un filtro de acción?
- 29. ¿Puedo obtener el tipo de devolución de una acción desde un filtro de acción?
- 30. Acceso a los datos del Filtro de acciones en la Acción del controlador