2014-02-14 9 views
5

Я добавляю маршрут динамически в RouteTable, но обновление не распространяющийся на другие процессы:Добавление динамических маршрутов в веб-Гарденс

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

Это правильно создает правильный маршрут, как я могу получить доступ к нему иногда , но если вы переключитесь на новый процесс или если я попытаюсь немного позже, я не могу получить доступ к этой странице. Если я перезапущу пул приложений, он отлично работает. Также, если я подожду достаточно долго, несколько часов, когда процессы будут переработаны, маршруты работают.

Я думаю, что это результат создания маршрута на одном процессе, и только в будущем процесс перерабатывается.

Хей идеи о том, как перенаправить маршрут обновления?

ответ

1

Я думаю, что проблема заключается в реализации Routes. Как видим, here - RouteTable.Routes является статическим. Поэтому проблема заключается не в том, почему маршруты не распространяются на все процессы, а на статическую переменную в веб-садовом выпуске.

Попытка подумать об обходном пути, то, что я могу придумать, - это решение, похожее на общий кэш между процессами веб-сада/веб-серверами в кластере. Вам нужно взять список динамических маршрутов OutProc и в DB или статический файл. Затем ваш код должен отслеживать эти файлы для изменений и добавлять новые маршруты, когда они добавляются к внешнему ресурсу.

 Смежные вопросы

  • Нет связанных вопросов^_^