Estoy intentando admitir algunas URL antiguas y asignarlas a las acciones del controlador. Las direcciones URL de aspecto:Rutas MVC con caracteres especiales
/~Home+Office~Note+Pads.html
Aquí es mi ruta:
routes.MapRoute(
"LegacyCategory",
"{path}.html",
new { controller = "LegacyCI", action = "Index", }
);
aquí está el (inicios de) mi controlador de tratar con ellos:
public class LegacyCIController : Controller {
public ActionResult Index(string path) {
if (path == "~Address+Labels") {
return RedirectToAction("Display", "Category", new { id = "AddressLabels" });
}
return RedirectToAction("Index", "Category");
}
}
Si fijo un punto de interrupción en LegacyCIController, y configuro mi página de inicio en XXX.html, el punto de interrupción impacta (y falla el if
) y la vida es buena. Pero cuando intento configurar la página de inicio en ~Address+Labels.html
, no se llega a ningún punto de interrupción, y Chrome simplemente vomita y me muestra una página que dice "Vaya, esta página parece estar rota".
Estoy ejecutando esta página a través de IIS 7 en mi máquina, no en Visual Studio.
¿Esta URL está tan mal formada que una ruta regular de MVC ni siquiera puede manejarla, o estoy haciendo algo diferente?
Wow, ese es un nombre de archivo bastante jacked. – Tejs
@Tejs - sí, sí lo es. Tratar con material heredado es una de las verdaderas alegrías de la vida :) –
Mi teoría es que IIS está rebotando en la solicitud, creo que IIS7 tiene un conjunto de caracteres de URL en la lista negra. – Tejs