从ASP.NET 4 RoutesTable中删除特定路由

时间:2010-10-19 10:19:06

标签: asp.net caching routing routetable

我的网站有很多路线。由于用户可以随意添加或删除页面,我需要一种方法来不时重新注册路由

在重新注册时,我不想清除整个路由缓存(“RouteTable.Routes.Clear”),但我宁愿通过路由通过表路由,并在其名称上使用某个正则表达式,决定是否删除是不是。

之后,我将重新注册我需要的特定页面

同时是我的代码

        For Each r In RouteTable.Routes
            If CType(r, Route).DataTokens("ConfigID") = ConfigID Then RouteTable.Routes.Remove(r)
        Next

在第一次删除后抛出错误“集合被修改;枚举操作可能无法执行。”

非常感谢你的帮助!!

1 个答案:

答案 0 :(得分:2)

无法获取路线的路线名称,因为该名称不是路线的属性。将路由添加到RouteTable时,该名称将用作路径的内部索引,并且永远不会暴露。

有一种方法可以做到这一点。

  1. 注册路线时,请在路线上设置带有路线名称的DataToken,并使用该路径过滤路线。
  2. 执行#1的最简单方法是编写自己的扩展方法来映射路由。