Domanda

Questo sembra che dovrebbe essere facile, ma per qualche motivo mi sto avendo fortuna. Sto migrando un'applicazione Web Form esistenti per MVC, quindi ho bisogno di mantenere la radice del sito che punta a mie pagine aspx esistenti per ora e si applicano solo instradamento verso percorsi denominati. Ecco quello che ho:

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

Quindi pagine aspx dovrebbero essere ignorati, e l'URL radice di default dovrebbero essere gestiti da questo gestore:

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

Questo sembra funzionare bene, ma la risultante YPOD mi dà questo:

  

controlli multipli con lo stesso ID   '__Page' sono stati trovati. Trace richiede   che i controlli hanno ID univoci.

, che sembra implicare che la pagina è in qualche modo sempre reso due volte. Se ho semplicemente digitare l'URL alla mia pagina dashboard direttamente funziona benissimo (nessun routing, nessun errore). Non ho idea del perché il codice del gestore avrebbe fatto nulla di diverso.

La linea di fondo - vorrei reindirizzare semplicemente il percorso principale URL di un aspx di mia scelta - chiunque può fare una certa luce

?
È stato utile?

Soluzione 2

Hmmmm. Quindi il mio browser si è bloccato per qualche motivo non collegati, e ora che ho riavviato, il codice di cui sopra sembra funzionare perfettamente come previsto. Io sono completamente confuso su come il codice lato server sarebbe ora agisce in modo diverso a causa di un riavvio del browser (a quanto pare in qualche modo qualcosa è stato memorizzato nella cache in modo non corretto credo), ma sembra che questo ora è un non-problema.

Modifica : Beh, questo è in realtà ancora un problema - non so perché ha funzionato prima, ma è un po 'casuale. La linea di fondo sembra essere che MVC non sembra giocare bene con il parser Trace.axd in alcune circostanze che altrimenti producono markup perfettamente valido. Io davvero non ho una buona spiegazione, ma la disabilitazione tracciando nel web.config bypassa l'errore. Per i miei scopi per ora che è abbastanza buono, ma mi piacerebbe sentire una spiegazione migliore da qualcun altro ...

Altri suggerimenti

Io non capisco il problema, potrebbe essere non sono abbastanza qualificati. In ogni caso cercherò ...;)

Se si desidera reindirizzare dal percorso principale, il motivo per cui non si utilizza il documento predefinito da IIS, metterlo a index.aspx ad esempio e quindi aggiungere in questa pagina un Response.Redirect alla pagina che si desidera reindirizzare?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top