2011-08-07 100 views
1

我正在思考使用ASP .NET路由的崩潰問題。我無法分辨這是Microsoft代碼中的錯誤,還是我錯誤地使用它。ASP.NET路由干擾問題

的情況基本上是這樣的:

我有我想要添加自定義路線。另外,我正在註冊ASP .NET DynamicDataRoute。如果我遺漏了我的自定義路由,則所有的ASP .NET DynamicDataRoute都可以正常工作。有一次,我之前添加此我DynamicDataRoute

routes.Add(new Route("IgnoreDirectory/{*pathInfo}"), new StopRoutingHandler())); 

所有DynamicData產生的DynamicHyperlinks與錯誤根URL生成,像這樣的:

http://localhost/IgnoreDirectory/MyTable/List

這應該是(而且是直到我加入我的自定義路由)

http://localhost/MyDynamicData/MyTable/List

什麼是我們稅務局是我加入我的DynamicDataRoute一個完全不同的路徑:

routes.Add(new DynamicDataRoute("MyDynamicData/{{table}}/{{action}}") 
       { 
        Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }), 
        Model = model 
       }); 

爲什麼增加了對IgnoreDirectory導致我DynamicData航線使用IgnoreDirectory的基本URL路由????

我找不出來。

回答

1

我在這裏出去走走,但我認爲這與兩件事有關。路由存儲在RouteTable中的順序非常重要,因爲應用程序將使用first route it finds來匹配URL。

我想這裏可能會發生的事情是,DynamicDataRoute根據您在路由表中DynamicDataRoute之前插入的路由創建自己。

我會做的第一件事就是在添加DynamicDataRoute後嘗試移動Route add。

希望這有助於...

+0

你說的沒錯,這確實有助於!...但我不明白的是,爲什麼DynamicDataRoute是建築本身映射到一個完全不同的道路的路線上( IgnoreDirectory)....你能否詳細說明爲什麼一個完全不同目錄的路由會干擾? – Jeff

+1

基於我對DynamicDataRoutes的工作方式非常有限的理解(希望不是完全錯誤的),他們將建立在路由表中的路由之前。如果您希望它們基於根(〜/),它們應位於RouteTable中的任何其他路由之前。 –