2011-05-16 51 views
10

我一直在这个问题上停留了好几个小时。为什么我在路线匹配时得到404? ASP.Net MVC

我有一个名为'DecisionPoint'的控制器,我在它的'ApplicationState'操作上设置了一个断点。无论我尝试什么,我都会在浏览器中看到404。我怀疑我的路线不正确,所以我下载了一个路由调试器,它将我所尝试的URL与我的控制器和操作相匹配。那么,为什么我会得到404并且从来没有看到断点?

/DecisionPoint/ApplicationState /没有/ 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** 

我创造一个全新的控制器和它的作品。这就是我的路由表的样子。状态控制器correclty路线即时存档

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); 

    } 
} 

所以我难倒..

+0

呵呵......我看不出有什么特别的错误:/ – 2011-05-16 01:39:57

+0

你可以在该控制器中执行任何其他操作吗?在那里抛出索引动作,看看你是否击中了控制器。你有一个控制器构造函数吗?在那里放置一个断点,看看它是否触及了这一点。 – BZink 2011-05-16 03:41:46

+0

请显示控制器代码。 – Haacked 2011-06-26 05:46:05

回答

0

我没有路线大师,但我一直添加的默认参数所有参数:

routes.MapRoute(
    "DecisionPointState", // Route name 
    "DecisionPoint/ApplicationState/{fileName}/{stateString}", // URL with parameters 
    new {controller = "DecisionPoint", 
     action = "ApplicationState" 
     fileName = UrlParameter.Optional, 
     stateString = UrlParameter.Optional 
    } // Parameter defaults 
); 
+0

我试过了..在这种情况下,我提供了两个参数。谢谢 – Nick 2011-05-16 01:46:27

+0

尼克,我知道这听起来有点疯狂,但如果您将操作重命名为其他内容会发生什么?我在想'ApplicationState'这个名字让IIS感到困惑。 – 2011-05-16 02:02:28

+0

我只是尝试将其更改为'UpdateState',它仍然给出404 – Nick 2011-05-16 02:05:45

11

确保您的控制器类名为DecisionPointController,而不是DecisionPoint

10

如果您AreaRegistration类和Controller类不在同一个命名空间,你会在这种情况下 - 路线将匹配(和RouteDebugger将确认这一点),但你会在“正确”的网址,以获取404 。

解决方案是确保两个clases在相同的命名空间。

+5

还要确保控制器类正确命名。我花了2个小时调试,因为文件名是正确的,但类名不是 – Nilzor 2014-01-07 15:17:38

+0

RouteDebugger链接已死亡。如果可以,请更新? – ppumkin 2017-02-23 09:59:02

+0

哦,我的上帝...... Nilzor .....我只是花了相同的时间。哇。 – Barry 2017-03-24 23:34:13

2

这可能是由于您的Controller在另一个引用不同版本的System.Web.Mvc的项目中发生的!

我有相同的症状 - 找到了正确的路线,但得到了404!在HttpHandler.ProcessRequest上抛出一个异常,说处理程序的控制器没有执行IController

2

我刚刚遇到了同样的问题。对我来说,问题是如果不同的命名空间(一个在一个区域中),我有两个同名的控制器。

0

在我的情况下,同样的问题的答案是需要“包含在项目中”相关的控制器和视图,而不是不正确的路由规则。

当我创建了它时,它们并未因某种原因而被自动包含。我关闭并重新打开解决方案后发现了此问题。

{+1 hate}授予Visual Studio,因为其错误的超自动化功能让我通过Web进行挖掘。配置文件,试图加强扩展,甚至尝试(和失败)掀起一个体面的ErrorController。

相关问题