¿ASP.NET MVC es compatible con algún tipo de RequestFilters, los filtros que se ejecutan una vez por solicitud antes de la instanciación de controladores y acciones?Filtros de solicitud de ASP.NET MVC
Respuesta
Puede crear su propio enrutador de enrutamiento, que podría estar lo suficientemente temprano en la tubería para lograr su objetivo.
public class MyRoutingHandler : IRouteHandler
{
protected virtual IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new InterceptingMvcHandler(requestContext);
}
IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
{
return GetHttpHandler(requestContext);
}
}
y el correspondiente controlador MVC:
public class InterceptingMvcHandler : MvcHandler
{
public InterceptingMvcHandler(RequestContext requestContext) : base(requestContext)
{
}
protected override IAsyncResult BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, object state)
{
httpContext.Response.Write("<h2>BeginProcessRequest</h2>");
return base.BeginProcessRequest(httpContext, callback, state);
}
protected override void EndProcessRequest(IAsyncResult asyncResult)
{
var context = RequestContext.HttpContext;
base.EndProcessRequest(asyncResult);
if (context != null)
{
context.Response.Write("<h2>EndProcessRequest</h2>");
}
}
}
A continuación, puede registrar el manejador de MVC en sus registros de ruta.
Hay action filters en ASP.NET MVC que le permiten ejecutar algunos códigos personalizados en diferentes etapas de la ejecución de la solicitud.
- Antes de ejecutar una acción
- Después de ejecutar una acción
- Antes de que el resultado se representa
- Después de que el resultado se representa
Dependiendo del código que está dispuesto a ejecutar y el tipo de funciones que desea realizar allí podrían ser otras formas de conectarse al marco.
Como dije, necesito implementar alguna lógica antes de la instanciación del controlador (principalmente sus dependencias) – SiberianGuy
@Idsa, ¿podría ser un poco más específico? sobre la * lógica * que intentas implementar De esta forma, podremos ofrecerle una solución más adecuada. –
Necesito determinar el idioma de localización para la solicitud actual antes de la creación de instancias del controlador porque mis servicios de localización están registrados según el idioma actual: Vincular
aquí hay un ejemplo para usted;
public class CompressFilter : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
HttpRequestBase request = filterContext.HttpContext.Request;
string acceptEncoding = request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(acceptEncoding)) return;
acceptEncoding = acceptEncoding.ToUpperInvariant();
HttpResponseBase response = filterContext.HttpContext.Response;
if (acceptEncoding.Contains("GZIP")) {
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
} else if (acceptEncoding.Contains("DEFLATE")) {
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
Si lo ha creado, puede usarlo por acción, por controlador o incluso para proyectos globales;
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
filters.Add(new CompressFilter());
}
- 1. ASP.NET MVC 3, Acción Filtros y Autofac inyección de dependencias
- 2. ¿Una forma de excluir filtros de acción en ASP.NET MVC?
- 3. ASP.NET MVC inyectar por solicitud
- 4. ¿Cómo probar filtros de acción en ASP.NET MVC?
- 5. ¿MvcMailer SendAsync bloquea una solicitud ASP.NET MVC?
- 6. SmtpClient.SendAsync bloqueando mi ASP.NET MVC Solicitud
- 7. Detectar una solicitud cancelada en ASP.NET MVC
- 8. Filtros de GlobalFilterCollection ejecutados antes de los filtros de ControllerInstanceFilterProvider
- 9. Manejo de solicitud de Async en ASP.NET MVC
- 10. Solicitud de certificado de cliente con Asp.net MVC
- 11. Filtros de área global en MVC 3
- 12. ASP.NET MVC, Ninject, instancia única por solicitud de múltiples constructores
- 13. ASP.net MVC - variable global con ámbito de solicitud
- 14. ASP.NET MVC - Generar rutas sin Http/Contexto de solicitud
- 15. NHibernate Profiler no ve solicitud de mi aplicación ASP.NET MVC
- 16. ¿Cómo agregar filtros API globales de ASP.Net web?
- 17. ASP.Net MVC personalizada autenticación
- 18. En los controladores asincrónicos ASP.NET MVC 2, ¿los filtros de acción se ejecutan de forma asíncrona?
- 19. Ejemplo de Windows Identity Foundation Solicitud MVC
- 20. ASP.NET MVC: Aplicar la solicitud AJAX en una acción
- 21. asp.net mvc - necesito almacenar algunos datos para la solicitud actual
- 22. debe formcollection estar vacío en asp.net mvc solicitud GET
- 23. ASP.NET MVC: ¿Se creó el controlador para cada solicitud?
- 24. Obtener la solicitud en bruto en ASP.NET MVC
- 25. ASP.NET MVC 2 VirtualPathProvider GetFile cada vez para cada solicitud
- 26. cómo saber si la solicitud es ajax en asp.net mvc?
- 27. ASP.Net MVC Ruta de Usuario
- 28. ASP.NET MVC en IIS6
- 29. ¿Filtros de acción MVC usando parámetros pasados a ActionResult?
- 30. Membresías de ASP.Net MVC
Los filtros de acción se ejecutan antes de ejecutar el método de acción pero no se ejecutan antes de la instanciación del controlador –