Frage

Dies scheint einfach zu sein, aber aus irgendeinem Grund habe ich kein Glück. Ich migriere eine vorhandene WebForms -App in MVC, daher muss ich die Wurzel der Site auf meine vorhandenen ASPX -Seiten aufrechterhalten und nur noch Routing auf genannte Routen anwenden. Hier ist, was ich habe:

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

Daher sollten ASPX -Seiten ignoriert werden, und die Standard -Root -URL sollte von diesem Handler behandelt werden:

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

Dies scheint in Ordnung zu funktionieren, aber der resultierende Ypod gibt mir Folgendes:

Es wurden mehrere Steuerelemente mit derselben ID '__Page' gefunden. Trace erfordert, dass Steuerelemente eindeutige IDs haben.

Das scheint zu implizieren, dass die Seite irgendwie zweimal gerendert wird. Wenn ich einfach die URL auf meine Dashboard -Seite direkt eingeben, funktioniert es einwandfrei (kein Routing, kein Fehler). Ich habe keine Ahnung, warum der Handler -Code etwas anders machen würde.

Fazit - Ich möchte einfach den Wurzel -URL -Pfad zu einem ASPX meiner Wahl umleiten - kann jemand etwas Licht verlieren?

War es hilfreich?

Lösung 2

Hmmmm. Mein Browser stürzte also aus einem nicht verwandten Grund ab, und jetzt, wo ich ihn neu gestartet habe, scheint der obige Code wie erwartet perfekt zu funktionieren. Ich bin völlig verwirrt darüber, wie der serverseitige Code jetzt aufgrund eines Neustarts eines Browsers unterschiedlich handeln würde (anscheinend wurde etwas falsch zwischengespeichert, denke ich), aber es scheint, dass dies jetzt kein Problem ist.

BEARBEITEN: Nun, das ist eigentlich immer noch ein Problem - ich bin mir nicht sicher, warum es vorher funktioniert hat, aber es ist ein bisschen zufällig. Das Endergebnis scheint zu sein, dass MVC unter bestimmten Umständen, die ansonsten ein perfekt gültiges Markup erzeugen, nicht gut mit dem Parser von Trace.Axd zu spielen scheint. Ich habe wirklich keine gute Erklärung, aber die Deaktivierung der Verfolgung in Web.config umgeht den Fehler. Für meine Zwecke ist das vorerst gut genug, aber ich würde gerne eine bessere Erklärung von jemand anderem hören ...

Andere Tipps

Ich verstehe Ihr Problem nicht wirklich, vielleicht bin ich nicht geschickt genug. Wie auch immer, ich werde es versuchen ...;)

Wenn Sie vom Root -Pfad umleiten möchten, warum nicht das Standarddokument von IIS verwenden, geben Sie es zum Beispiel in INDEX.aspx ein und fügen Sie dann eine Antwort hinzu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top