【发布时间】:2011-08-26 03:07:41
【问题描述】:
我已经在这个问题上纠结了几个小时了。
我有一个名为“DecisionPoint”的控制器,我在它的“ApplicationState”操作上设置了一个断点。无论我尝试什么,我都会在浏览器中不断收到 404。我怀疑我的路由不正确,所以我下载了一个路由调试器,它使我们尝试的 URL 与控制器和操作相匹配。那么为什么我得到一个 404 却看不到断点命中呢?
/DecisionPoint/ApplicationState/no/worky --> 404
控制器:
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");
路线
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**
我创建了一个全新的控制器并且它可以工作。这就是我的路由表现在的样子。状态控制器正确路由到 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);
}
}
所以我被难住了..
【问题讨论】:
-
嗯...我看不出有什么特别的错误:/
-
您可以在该控制器中执行任何其他操作吗?在那里抛出一个索引动作,看看你是否击中了控制器。你有控制器构造函数吗?在那里放置一个断点,看看它是否达到了这个目标。
-
请出示控制器代码。
标签: asp.net asp.net-mvc asp.net-mvc-routing