Ich versuche, einige Legacy-URLs zu unterstützen und sie Controller-Aktionen zuzuordnen. Die URLs wie folgt aussehen:MVC Routen mit Sonderzeichen
/~Home+Office~Note+Pads.html
Hier ist meine Route:
routes.MapRoute(
"LegacyCategory",
"{path}.html",
new { controller = "LegacyCI", action = "Index", }
);
Hier ist die (Anfänge) mein Controller mit ihnen umgehen:
public class LegacyCIController : Controller {
public ActionResult Index(string path) {
if (path == "~Address+Labels") {
return RedirectToAction("Display", "Category", new { id = "AddressLabels" });
}
return RedirectToAction("Index", "Category");
}
}
Wenn ich einen Haltepunkt setzen in LegacyCIController, und ich setze meine Startseite auf XXX.html, der Haltepunkt trifft (und schlägt die if
) und das Leben ist gut. Aber wenn ich versuche, die Startseite auf ~Address+Labels.html
zu setzen, wird kein Haltepunkt erreicht, und Chrome kotzt nur und zeigt mir eine Seite, auf der steht "oops, diese Seite scheint kaputt zu sein".
Ich führe diese Seite durch IIS 7 auf meinem Computer, nicht Visual Studio.
Ist diese URL so fehlerhaft, dass eine normale MVC-Route nicht einmal damit umgehen kann, oder mache ich etwas anderes falsch?
Wow, das ist ein ziemlich aufgebockter Dateiname. – Tejs
@Tejs - ja, ja ist es. Der Umgang mit Legacy-Zeug ist eine der wahren Freuden des Lebens :) –
Meine Theorie ist, dass IIS die Anfrage springt - ich denke, IIS7 hat eine Blacklist URL-Zeichensatz. – Tejs