注册动态路由需要重启应用吗?

时间:2010-10-18 11:30:43

标签: asp.net-mvc-2 routing

我正在开发一个小型CMS以获得乐趣,作为其中的一部分,我在应用程序启动时从数据库注册路由。用户可以自己添加路线。问题是此路由存储在数据库中,因此在应用程序重新启动之前不会注册。

是否可以在没有重启应用程序的情况下重新注册路由?

如果没有,我该如何按需重启应用程序?

干杯,

伊恩

1 个答案:

答案 0 :(得分:6)

不,您可以动态添加和删除路由。 RouteTable.Routes只是一个RouteCollection,其AddRemove成员(或者,如果您愿意,Clear)。

请注意,Web服务器是多线程的,因此您需要使用RouteCollection的锁定协议。特别是,这意味着GetWriteLock

var routes = RouteTable.Routes;
var newDynamicRoute = new Route(...);
using(routes.GetWriteLock()) {
    routes.Remove(dynRoute);
    dynRoute = newDynamicRoute;
    routes.Add(dynRoute);
}