私のGlobal.asax
ファイルでは、データベースから収集されたWebページのリストをループすることによりApplication_Start
、特定の数のルートを作成します。RouteTable.Routes
これは正常に機能し、すべてのルートが作成され、必要に応じて機能します。しかし、私のWebアプリケーションでは、ユーザーはデータベースを変更できるため、Webページのコレクションを変更できます。これは、アプリケーションのライフサイクル中に一部のルートが無効になり、新しいルートを追加する必要があることを意味します。
私がやりたいことは次のとおりです。ユーザーがWebページコレクションに何かを変更した瞬間に、RouteTableをクリアし、(変更された)Webページコレクションを再度ループして再ロードしたいと思います。
残念ながら、Application_Start
inGlobal.asax
は1回だけ実行されます。つまり、アプリケーションの開始時に実行されます。静止Session_Start
しているために望ましくない動作が発生する場所に移動してみました。RoutesTable
RouteTable
静的なものを「同期」させたまま、ユーザーがWebページコレクションをオンザフライで変更できるようにするにはどうすればよいですか?
編集
現時点では、私は次のようなことをしています(擬似コード):
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を更新するにはどうすればよいですか?