0

クライアントによって作成された動的メニューがあります。Application_Startのイベントでルートを登録しましたglobal.asax。クライアントが新しいメニューを追加するときにルートを登録したいと思います。どうすればこれを達成できますか?

現在、global.asax の Application_Start イベントにすべての古いルートを登録しています。

void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

void RegisterRoutes(RouteCollection routes)
{

    string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    SqlConnection sqlCon = new SqlConnection(connectionstring);
    SqlCommand sqlCmd = new SqlCommand("Sch_Sp_GetRegisterRoutes", sqlCon);
    sqlCmd.CommandType = CommandType.StoredProcedure;

    SqlDataAdapter sda = new SqlDataAdapter(sqlCmd);
    DataTable dt = new DataTable();

    try
    {
        sda.Fill(dt);
    }
    catch (Exception ex)
    {
    }
    finally
    {
        sqlCon.Close();

    }
    if (dt != null && dt.Rows.Count > 0)
    {
        foreach (DataRow dr in dt.Rows)
        {
            try
            {
                routes.MapPageRoute(dr["Menuname"].ToString().Replace(" ",string.Empty),
              dr["URL"].ToString(),
               "~/" + dr["Pagename"].ToString());
            }
            catch (Exception exx)
            {

            }

        }
    }


}

管理者ログインでは、クライアントが新しいページを作成できるように、cms のような機能をクライアントに提供します。私の質問は、これらの新しいページ ルートをルートに登録するにはどうすればよいですか? . クライアントが新しいページを追加するたびにアプリケーションを再起動したくありません。クライアントが新しいページを追加するときに、メソッドを呼び出してこれらのページをルートに登録したいだけです。どうすればこれを達成できますか?

最後に、私はそれを修正する方法を手に入れました。次のメソッドを呼び出して、アプリケーションを再起動します。

 System.Web.HttpRuntime.UnloadAppDomain();
4

1 に答える 1