2011-05-16 84 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。

相關問題