Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在asp.net web窗体中添加应用程序启动事件以外的路由_C#_Asp.net_Webforms_Asp.net Routing - Fatal编程技术网

C# 是否可以在asp.net web窗体中添加应用程序启动事件以外的路由

C# 是否可以在asp.net web窗体中添加应用程序启动事件以外的路由,c#,asp.net,webforms,asp.net-routing,C#,Asp.net,Webforms,Asp.net Routing,我有由我的客户创建的动态菜单。我已在global.asax中的Application\u Start事件中注册了我的路线。现在,我想在客户添加新菜单时注册路由。我怎样才能做到这一点 目前,我已在global.asax的Application_Start事件中注册了所有旧路由 void Application_Start(object sender, EventArgs e) { RegisterRoutes(RouteTable.Routes); } void RegisterRout

我有由我的客户创建的动态菜单。我已在
global.asax
中的
Application\u Start
事件中注册了我的路线。现在,我想在客户添加新菜单时注册路由。我怎样才能做到这一点

目前,我已在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();

现在,我已经使用以下代码重新启动了我的应用程序,新创建的URL通过它在路由中注册

 System.Web.HttpRuntime.UnloadAppDomain();

可能重复@dav_i先生,我使用过Asp.net web表单,请给我此方法的解决方案..抱歉,我没有看到您标题中的web表单部分。你已经尝试过什么?@dav_我在我的项目中没有使用mvc。请指导我使用asp.net web表单。你尝试过做什么?注意:您的问题已被搁置[暂停]:请阅读。我已将代码添加到我的RouteConfig文件中,以从数据库中提取并将其中定义的路由添加到routes表中(使用routes.MapPageRoute)。然后在创建路由的管理页面中,我包含了一个链接,该链接运行System.Web.HttpRuntime.UnloadAppDomain()方法,该方法再次调用RegisterRoutes函数。工作起来很有魅力。