He estado atascado en este tema durante varias horas.¿Por qué obtengo 404 cuando la ruta coincide? ASP.Net MVC
Tengo un controlador llamado 'DecisionPoint' y tengo un punto de interrupción configurado en su acción 'ApplicationState'. No importa lo que intento, sigo obteniendo un 404 en el navegador. Sospeché que mi ruta no era correcta, así que descargué un depurador de ruta y las URL que trato de encontrar coinciden con el Controlador y la acción. Entonces, ¿por qué obtengo un 404 y nunca veo el punto de ruptura?
/DecisionPoint/ApplicationState/no/worky -> 404
controlador:
public ActionResult ApplicationState(string fileName, string stateString)
{
string filePath = GetDpFilePath(fileName);
HtmlDocument htmlDocument = new HtmlDocument();
htmlDocument.Load(filePath);
HtmlNode stateScriptNode =
htmlDocument.DocumentNode.SelectSingleNode("/html/head/script[@id ='applicationState']");
stateScriptNode.InnerHtml = "var applicationStateJSON =" + stateString;
htmlDocument.Save(filePath);
return Json("State Updated");
Ruta
routes.MapRoute(
"DecisionPointState", // Route name
"DecisionPoint/ApplicationState/{fileName}/{stateString}", // URL with parameters
new {controller = "DecisionPoint", action = "ApplicationState"} // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}`
**Update**
que crear un controlador completamente nuevo y funciona. Este es ahora el aspecto de mi tabla de rutas. Las rutas controlador correclty estatales para savestate
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"StateRoute", // Route name
"State/SaveState/{file}/{state}", // URL with parameters
new { controller = "State", action = "SaveState", file = UrlParameter.Optional, state = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"DPStateRoute", // Route name
"DecisionPoint/ApplicationState/{file}/{state}", // URL with parameters
new { controller = "DecisionPoint", action = "ApplicationState", file = UrlParameter.Optional, state = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
// RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}
}
Así que estoy confundido ..
huh ... No puedo ver nada específicamente incorrecto:/ –
¿Puedes acceder a otras acciones en ese controlador? Lanza una acción de índice allí para ver si estás golpeando el controlador. ¿Tienes un constructor de controlador? Coloque un punto de quiebre allí para ver si está golpeando eso. – BZink
Por favor, muestre el código del controlador. – Haacked