ASP.NET MVC 2.0 + Implementación de un IRouteHandler no se dispara
-
19-09-2019 - |
Pregunta
¿Puede alguien por favor me ayude con esto ya que no tengo idea de por qué pública IHttpHandler GetHttpHandler (RequestContext RequestContext) no se está ejecutando. En mi Global.asax.cs tengo
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.Add("ImageRoutes", new Route("Images/{filename}", new CustomRouteHandler()));
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
// CustomRouteHandler aplicación es inferior a
public class CustomRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
// IF I SET A BREAK POINT HERE IT DOES NOT HIT FOR SOME REASON.
string filename = requestContext.RouteData.Values["filename"] as string;
if (string.IsNullOrEmpty(filename))
{
// return a 404 HttpHandler here
}
else
{
requestContext.HttpContext.Response.Clear();
requestContext.HttpContext.Response.ContentType = GetContentType(requestContext.HttpContext.Request.Url.ToString());
// find physical path to image here.
string filepath = requestContext.HttpContext.Server.MapPath("~/logo.jpg");
requestContext.HttpContext.Response.WriteFile(filepath);
requestContext.HttpContext.Response.End();
}
return null;
}
}
Puede cualquier organismo que dime lo que me falta aquí. Simplemente pública IHttpHandler GetHttpHandler (RequestContext RequestContext) no se dispara.
Me havn't cambia nada en el web.config tampoco. Lo que me falta aquí? Por favor, ayuda.
Solución
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
routes.Add("ImageRoutes", new Route("Images/{filename}", new CustomRouteHandler()));
Es necesario dar la vuelta a estas dos declaraciones. {controlador} / {acción} / {id} , probablemente, se coincide con el URL entrante, por lo que necesita para declarar su especial Imágenes / {nombre del archivo} antes.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow