Question

Cela semble comme il devrait être facile, mais pour une raison quelconque, je ne suis pas avoir de chance. Je la migration d'une application WebForms existantes MVC, donc je dois garder la racine du site pointant vers mes pages ASPX existantes pour appliquer maintenant et que le routage des itinéraires nommés. Voici ce que j'ai:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

        RouteTable.Routes.Add(
            "Root",
            new Route("", new DefaultRouteHandler())
        );

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Calendar2", action = "Index", id = "" }  // Parameter defaults
        );
    }

pages ASPX doivent être ignorées, et doivent être manipulés l'URL racine par défaut par ce gestionnaire:

public class DefaultRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        return System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(
                "~/Dashboard/default.aspx", typeof(Page)) as IHttpHandler;
    }
}

Cela semble fonctionner OK, mais le résultat YPOD me donne ceci:

  

contrôles multiples avec le même ID   « __Page » ont été trouvés. trace nécessite   que les contrôles ont des identifiants uniques.

ce qui semble impliquer que la page est en quelque sorte se rendit deux fois. Si je tape simplement dans l'url sur ma page de tableau de bord directement, il fonctionne très bien (pas de routage, pas d'erreur). Je ne sais pas pourquoi le code de gestionnaire ferait les choses différemment.

Bottom line - Je voudrais simplement rediriger le chemin d'URL racine à un ASPX de mon choix - quelqu'un peut-il faire la lumière

?
Était-ce utile?

La solution 2

Hmmmm. Donc, mon navigateur est écrasé pour une raison sans rapport, et maintenant que je l'ai redémarré, le code ci-dessus semble fonctionner parfaitement comme prévu. Je suis complètement confus sur la façon dont le code côté serveur serait maintenant agir différemment en raison d'un redémarrage du navigateur (apparemment en quelque sorte quelque chose en cache je suppose à tort), mais il semble que ce soit maintenant un non-problème.

EDIT : Eh bien, c'est en fait toujours un problème - ne sais pas pourquoi il a travaillé avant, mais il est un peu aléatoire. La ligne de fond semble être que MVC ne semble pas jouer bien avec l'analyseur Trace.axd dans certaines circonstances qui produisent par ailleurs balisage parfaitement valide. Je n'ai pas vraiment une bonne explication, mais la désactivation de traçage dans web.config court-circuite l'erreur. Pour mes besoins pour l'instant c'est assez bon, mais j'aimerais entendre une meilleure explication de quelqu'un d'autre ...

Autres conseils

Je ne comprends pas vraiment votre problème, peut-être je ne suis pas assez habile. Quoi qu'il en soit, je vais essayer ...;)

Si vous souhaitez rediriger à partir du chemin racine, pourquoi ne pas utiliser le document par défaut de IIS, mis à index.aspx par exemple, puis ajouter dans cette page une response.redirect à la page que vous souhaitez rediriger vers?

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