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.

¿Fue útil?

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
scroll top