как перезагрузить RouteTable при изменении коллекции веб-страниц?

В моем файле Global.asax на Application_Start я создаю определенное количество маршрутов в RouteTable.Routes путем просмотра списка веб-страниц, собранных из базы данных. Это отлично работает, все маршруты создаются и работают по мере необходимости. Но в моем веб-приложении пользователь может изменять базу данных и, следовательно, коллекцию веб-страниц. Это означает, что в течение жизненного цикла приложения некоторые маршруты становятся недействительными, и должны быть добавлены новые маршруты.

Я хочу сделать следующее: в тот момент, когда пользователь что-то изменит в коллекции веб-страниц, я хотел бы очистите RouteTable и перезагрузите его, снова перебрав (измененную) коллекцию веб-страниц.

К сожалению, Application_Start в Global.asax запускается только один раз, а именно в начале приложение. Я попытался переместить его в Session_Start , что привело к нежелательному поведению из-за того, что RoutesTable статичен.

Как дать моему пользователю возможность изменять коллекцию веб-страниц на сайте -fly при наличии статической RouteTable оставаться «синхронизированной» с ним?

Edit

На данный момент я делаю что-то вроде этого (псевдокод):

public class WebPageInfo      // represents a record in the database
{
 public string Title;         //  My nice page
 public string Url;           //  NicePage 
 public string PhysicalFile;  //  ~/Page.aspx
}

В Global.asax:

protected virtual void Application_Start(object sender, EventArgs e)
{
 foreach (WebPageInfo webPageInfo in webPageInfos)
 {
  RouteTable.RegisterRoute(webPageInfo.Title, webPageInfo.Url, webPageInfo.PhysicalFile);
 }
}

Проблема в том, что в течение жизненного цикла приложения пользователи могут добавлять / изменить / удалить записи в webPageInfos , как мне обновить RouteTable с этими изменениями?

5
задан Bazzz 5 February 2011 в 09:18
поделиться