2016-05-18 8 views
1

Wir versuchen langsam, von unseren klassischen asp-Seiten zu mvc-Ansichten zu migrieren, aber ich bin auf ein Problem gestoßen, das ich nicht herausfinden kann!Mischen von klassischem ASP mit MVC - Probleme mit den gleichen Pfaden

Wir wollen die gleiche URL-Struktur beibehalten, also hatte ich einen Controller/eine Aktion erstellt, um auf die gleiche URL zu verweisen, dies wird jedoch ignoriert und die ASP-Datei hat immer Priorität.

Beispiel:

ich die Ordnerstruktur habe: Erwachsene \ Policies \ index.asp und einen MVC-Controller namens Erwachsene mit einer genannten Aktion Policies

Wenn ich wechseln Sie zu dem url: ..co.uk \ adultes \ policies

Ich erwarte, dass der Browser zu meinem neuen Controller Aktion Meth gehen od aber es geht immer zum klassischen asp-Dateispeicherort.

Wenn ich versuche, index.asp zu etwas anderem umzubenennen, werde ich einen Erlaubnisfehler erhalten (so versucht es immer noch, den klassischen Asp-Pfad anstatt der MVC-Controller-Aktion die ganze Zeit zu verwenden).

Ich habe Stunden damit verbracht, mit dem Routing zu experimentieren, aber ich kann es nicht funktionieren. Es ist wichtig, dass wir dieselbe URL-Struktur beibehalten, damit ich meinem Controller/meiner Aktion keinen alternativen Namen geben kann.

Kann mir bitte jemand helfen?

Danke!

Edit:

Ich habe Art der Lage, dies mit einigen regex ein Rewrite-Modul zur Arbeit zu kommen, um dann das Wort „/ index“ am Ende angehängt, die dann an die mvc Ansicht gehen machen .

Ich weiß nicht, welche Muster Urls am Ende mit einer Erweiterung zu ignorieren zu verwenden, obwohl das heißt asp/jpeg usw., weil die URL in dreht /adults/policies/test.asp/index

Bisher habe ich dieses Muster eingefügt:

/? ([^:/\ S] +) ((\ w +) /)([\w-.]+[^#?\s]+ .?()) (# [\ w -] +) $

von hier genommen: http://www.regextester.com/20

kann jemand helfen damit dieses Umschreibe-Modul nicht eingreift, wenn am Ende eine URL mit einem * steht?

+0

Ist Ihr Anwendungspool im integrierten Modus oder im klassischen Modus ausgeführt? – 3615

+0

integrierter Modus – HDhani

+0

Klingt, als ob es der Standardroute folgt, wie es sein sollte. Sie können die eingerichteten Routen anzeigen, indem Sie Ihre App_Start \ RouteConfig.cs-Datei anzeigen. Ich bin mir nicht sicher, ob es möglich ist, klassische Asp mit dem MVC-Framework zu mischen. Sie könnten versuchen, Routen für alle Ihre alten ASP-Seiten zu definieren und dann innerhalb der Aktion, die an Sie weitergeleitet wird, würden Sie diese ASP-Seite laden. Ich würde versuchen, 'return View (" classic/page.asp ");' aufzurufen und von dort aus zu gehen. Abhängig davon, wie diese Seiten eingerichtet sind, bin ich mir sicher, dass das nicht funktionieren wird. –

Antwort

1

Gemäß diesem Artikel https://www.simple-talk.com/dotnet/asp.net/mixing-web-forms-and-asp.net-mvc/ müssen Sie sicherstellen, dass Ihr MVC-Routing eine Route für diesen Controller/Aktion definiert hat. Stellen Sie daher sicher, dass in Ihrer RouteConfig.cs-Datei keine Regel wie diese in Ihrer RegisterRoutes(RouteCollection routes)-Funktion definiert ist, die die Route ignoriert.

//Do not route requests for /adults/policies/any/additional/path 
routes.IgnoreRoute("adults/policies/"); 
//Do not route for adults/policies/any/additional/path?withquerystring=true 
routes.IgnoreRoute("adults/policies/{*pathInfo}"); 

auch, stellen Sie sicher, dass Sie somthing wie dies in Ihrem haben. RegisterRoutes(RouteCollection routes) Funktion innerhalb Ihrer RouteConfig.cs-Datei

routes.MapRoute(
    "Adult Policies", 
    "adults\policies\index.asp" 
    new { controller = "MyController", action = "MyAction"} 
); 

Leider wird es sehr schwierig, wenn nicht unmöglich, eine Route zu erstellen, die alle von den ASP-Seiten fangen, die Sie da auf diese Weise zu routen möchten, wie Sie in Ihren Kommentaren erwähnt, gibt es andere ASP-Dateien in diesem Ordner, die Sie noch bereitstellen möchten. Das bedeutet, dass Sie jedes Mal, wenn Sie eine dieser Seiten ersetzen, bis zu dem Punkt, an dem Sie alle Seiten ersetzt haben, eine Route wie diese erstellen müssen. In diesem Fall ist ein Catch für diesen Controller einfach.

Die andere Option eine sehr spezifische ignorieren Regel für alle aktuellen ASP-Seiten in diesem Ordner erstellen und sie eins nach dem anderen zu entfernen, wie Sie sie zu Aktionen umzusetzen. Und natürlich wird eine sehr breite Route definiert, die alle Anfragen an diesen Ordner abfängt.

+0

Danke für die Info. Ich fürchte, Sie haben die Schwierigkeit, diese Aufgabe zu erledigen, da ich Unterdateien (asp-Dateien) habe, auf die ich immer noch Zugriff habe. Also habe ich beschlossen, Rewrite Module jetzt auf den jeweiligen Seiten zu erstellen, die ich sein werde Aktualisierung dh ' ' – HDhani

Verwandte Themen