2011-08-07 65 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中的任何其他路由之前。 –