В моем файле Global.asax
на Application_Start
я создаю определенное количество маршрутов в RouteTable.Routes
путем просмотра списка веб-страниц, собранных из базы данных. Это отлично работает, все маршруты создаются и работают по мере необходимости. Но в моем веб-приложении пользователь может изменять базу данных и, следовательно, коллекцию веб-страниц. Это означает, что в течение жизненного цикла приложения некоторые маршруты становятся недействительными, и должны быть добавлены новые маршруты.
Я хочу сделать следующее: в тот момент, когда пользователь что-то изменит в коллекции веб-страниц, я хотел бы очистите RouteTable и перезагрузите его, снова перебрав (измененную) коллекцию веб-страниц.
К сожалению, Application_Start
в Global.asax
запускается только один раз, а именно в начале приложение. Я попытался переместить его в Session_Start
, что привело к нежелательному поведению из-за того, что RoutesTable
статичен.
Как дать моему пользователю возможность изменять коллекцию веб-страниц на сайте -fly при наличии статической RouteTable
оставаться «синхронизированной» с ним?
На данный момент я делаю что-то вроде этого (псевдокод):
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 с этими изменениями?