Pourquoi est-ce que je reçois 404 quand l'itinéraire correspond? ASP.Net MVC
J'ai été coincé sur ce problème depuis plusieurs heures maintenant.
J'ai un contrôleur appelé "DecisionPoint' et j'ai un point d'arrêt défini sur 'ApplicationState' action. Peu importe ce que j'essaie, je reçois une erreur 404 dans le navigateur. Je me doutais bien que ma route n'était pas correcte, j'ai donc téléchargé un itinéraire débogueur et il s'est nos les Url, je suis en train de match le Contrôleur et l'action. Alors, pourquoi ne j'obtiens une erreur 404 et de ne jamais voir le point d'arrêt est atteint?
/DecisionPoint/ApplicationState/non/worky --> 404
Contrôleur:
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");
Route
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**
J'ai créer un tout nouveau contrôleur et il fonctionne. C'est maintenant que ma table de routage ressemble. Le contrôleur d'état correctement des itinéraires de 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);
}
}
Donc je suis perplexe..
source d'informationauteur Nick
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que votre contrôleur de classe est appelée DecisionPointController et pas DecisionPoint
Si votre
AreaRegistration
classe etController
de classe ne sont pas dans le même espace de noms, vous serez dans cette situation - la route (et RouteDebugger vous le confirmera), mais vous obtiendrez une erreur 404 lors de la "corriger" l'url.La solution est de s'assurer que les deux clases sont dans le même espace de noms.
Vous pouvez utiliser RouteDebugger pour vérifier votre itinéraire.
http://helios.ca/2009/05/26/aspnet-mvc-route-debugging/
Il a été très utile pour moi.
Cela peut se produire en raison de votre
Controller
être dans un autre projet qui fait référence à une version différente deSystem.Web.Mvc
!J'ai eu les mêmes symptômes - la route a été trouvé, mais j'ai reçu une erreur 404! Sur HttpHandler.ProcessRequest, une exception a été levée en disant: le gestionnaire du contrôleur ne pas mettre en œuvre
IController
.Récemment, j'ai rencontré ce même problème. Pour moi le problème était que j'avais deux contrôleurs avec le même nom si différents espaces (On était dans une zone).
Je ne suis pas itinéraires gourou, mais j'ai toujours ajouté tous les paramètres par défaut de l'argument:
Dans mon cas, la réponse, pour le même problème était une question d'avoir à inclure dans le projet" à la les contrôleurs et les vues à la place de l'inexactitude des règles de routage.
Lors de la mine ont été créés, ils ne sont pas automatiquement inclus pour une raison quelconque. Ce problème a été révélée après que j'ai fermé et rouvert la solution.
{+1 de la haine} attribué à Visual Studio pour ses fausses hyper-l'automatisation de l'envoi de me creuser à travers le Web.Les fichiers de configuration, en essayant de virer de bord sur les extensions, et même d'essayer (et à défaut) pour concocter un décent ErrorController.