2012-02-06 179 views
0

令我有我的Global.asaxAsp.net MVC 3路由表 - 路由

routes.MapRoute(
        "404", 
        "{*url}", 
        new { controller = "Error", action = "PageNotFound" }) 

; 
地區

和路線404路線。 如果請求是進入的global.asax路線,則在路由表中的路由的順序是:

1)面積路線

2)的global.asax路由

3)404路由

但是,如果請求是進入的區域,則在路由表中的路由的順序是:¨

1)的global.asax路由

2)4 04路線

3)面積路線

回答

1

的路由在默認MVC應用程序所應用的順序:

1)所在區域 2.)全球 3.)路由表

如此處所示的默認代碼所示:

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
    } 

您會注意到區域和註冊區域優先通過RegisterRoutes方法中註冊的路由。爲什麼?當上面的代碼用於註冊路由表時,路由在整個路由列表中顯示爲FIRST。

因此,如果您的代碼與下面的代碼相同,而且您未按照正確的路線,則可能按照您在Area或Global.asax中配置路線的順序排列。

+0

但我不明白,我採取了打印屏幕和更新帖子 – 2012-02-06 21:12:17

+0

這將是我們很難測試這一點。我們沒有所有的路由或您試圖命中測試的URL或您的路由未配置的配置。從您對web服務器的描述(未列出的IIS版本)的性能與另一個web服務器(IIS?或者在Cassini服務器中構建的Visual Studios?)。路線表中顯示了多少總路線?你的圖片顯示#20,但不顯示它後面是否有更多。你需要幫助給我們更多的信息。 – 2012-02-06 21:48:52