在我的Global.asax
文件中,我通过循环访问从数据库收集的网页列表来Application_Start
创建一定数量的路由。RouteTable.Routes
这工作正常,所有路线都已创建并根据需要运行。但是在我的 Web 应用程序中,用户可以修改数据库,从而修改网页的集合。这意味着在应用程序的生命周期中,一些路由变得无效,应该添加新的路由。
我希望做的是:当用户对网页集合进行更改时,我想清除 RouteTable 并通过再次循环(修改后的)网页集合来重新加载它。
不幸的是,Application_Start
inGlobal.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?