在不重置应用程序的情况下重置asp.net mvc路由

5
我希望将我的路由存储在数据库中,并在Global.asax.cs的Application_Start中注册它们。一切都很好,但是如果DB中有任何更改,我必须重置应用程序,才能让应用程序获取我的更改。
如果我可以在不重新启动应用程序的情况下重置路由,则问题将得到解决。 各位geeks,我该如何实现呢?自定义httpmodule?还是...

我非常有兴趣看到您基于数据库的路由存储解决方案。我在网上看过一些例子,但它们通常都很糟糕,或者不够充分。 - Dan Atkinson
2个回答

6
public static void UpdateRouteRegistration() {
  RouteCollection routes = RouteTable.Routes;
  using (routes.GetWriteLock()) {
    routes.Clear();
    // repopulate route table here
  }
}

然后从Application_Start中调用此方法,以及您需要初始化路由表的任何其他时间。注意:这是从记忆中复制的,可能会略有错误,但您可以理解。


我一直在寻找这个答案,自从我开始启动以来。虽然我还没有测试过这个解决方案,但听起来很酷。但是如果重置发生在其他交易正在进行时,会不会有影响呢?如果这是一个类似博客的项目,那么可以,但可能不适用于交易关键的其他类型,这只是我的想法... - Naga

-4

这是一个愚蠢的回答,没有应用程序重启就不能添加路由,并且在没有重启的情况下调用UpdateRouteRegistration()会清除路由,因此每个请求都会抛出错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接