【问题标题】:ASP.NET Routing Interference ProblemsASP.NET 路由干扰问题
【发布时间】:2011-08-07 18:36:54
【问题描述】:

我在使用 ASP .NET 路由时遇到了一个令人震惊的问题。我不知道这是 Microsoft 代码中的错误,还是我只是用错了。

场景基本上是这样的:

我想添加一条自定义路线。此外,我正在注册 ASP .NET DynamicDataRoutes。如果我省略了自定义路由,所有 ASP .NET DynamicDataRoutes 都可以正常工作。一旦我在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????

我想不通。

【问题讨论】:

    标签: asp.net url-routing dynamic-data asp.net-routing


    【解决方案1】:

    我在这里很危险,但我认为这与两件事有关。路由存储在 RouteTable 中的顺序很重要,因为应用程序将使用 first route it finds 来匹配 URL。

    我认为这里可能发生的情况是 DynamicDataRoute 正在建立在您在路由表中 DynamicDataRoute 之前插入的 Route 上。

    我要做的第一件事是在添加 DynamicDataRoute 后尝试移动 Route 添加。

    希望这会有所帮助...

    【讨论】:

    • 你说得对,这确实有帮助!...但我不明白为什么 DynamicDataRoute 将自身构建在映射到完全不同路径(IgnoreDirectory)的路由上... . 你能详细说明为什么一个完全不同的目录的路由会干扰吗?
    • 基于我对 DynamicDataRoutes 工作方式的非常有限的理解(希望不是完全错误),它们将根据 RouteTable 中出现在它们之前的路由来构建自己。如果您希望它们基于根 (~/),它们应该位于 RouteTable 中的任何其他路由之前。
    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 2021-05-05
    • 2016-03-31
    • 2015-10-12
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2016-07-10
    相关资源
    最近更新 更多