【问题标题】:Adding Dynamic Routes in Web Gardens在 Web Gardens 中添加动态路由
【发布时间】:2014-03-13 14:45:26
【问题描述】:

我正在向 RouteTable 动态添加路由,但更新不会传播到其他进程:

using (RouteTable.Routes.GetWriteLock())
{
    RouteTable.Routes.MapPageRoute(
        String.Format("_{0}", routeName), 
        routeName, 
        "~/Template.aspx", 
        true, 
        new RouteValueDictionary {{"page", routeName}});
}

这会正确创建正确的路由,因为有时我可以访问它,但如果切换到新进程或稍后尝试,我将无法访问该页面。 如果我然后重新启动应用程序池,它工作正常。此外,如果我等待足够长的时间,几个小时,当进程被回收时,路由就会工作。

我认为这是在一个进程上创建路由的结果,并且仅在未来进程回收时。

对如何推送路线更新有什么想法?

【问题讨论】:

    标签: asp.net url-rewriting webforms routing web-garden


    【解决方案1】:

    我认为问题在于Routes 的实现。正如我们所见,here - RouteTable.Routes 是静态的。所以这里的问题不是为什么路由没有传播到所有进程,而是网络花园问题中更多的静态变量。

    试图想出一个解决方法,我能想出一个类似于集群中网络花园进程/网络服务器之间共享缓存的解决方案。您需要将动态路由列表OutProc 放入数据库或静态文件中。然后,您的代码需要跟踪这些文件的更改并在将它们添加到外部资源时添加新路由。

    【讨论】:

      猜你喜欢
      • 2012-05-31
      • 1970-01-01
      • 2018-07-27
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      相关资源
      最近更新 更多