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