Question

Quelqu'un peut-il me aider s'il vous plaît ce que je ne sais pas pourquoi publique IHttpHandler GetHttpHandler (RequestContext RequestContext) n'est pas l'exécution. Dans mon Global.asax.cs je

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 mise en œuvre est ci-dessous

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;
    }
}

Peut-corps me dire ce que je suis absent ici. Simplement publique IHttpHandler GetHttpHandler (RequestContext RequestContext) ne se déclenche pas.

Je havn't changer quoi que ce soit dans le web.config soit. Ce que je suis absent ici? S'il vous plaît aider.

Était-ce utile?

La solution

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()));

Vous devez retourner ces deux déclarations. {contrôleur} / {action} / {id} est assortissent probablement l'URL entrant, vous devez déclarer votre spéciale Images / {nom} avant lui.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top