从DB记录创建路由

时间:2013-03-12 15:42:15

标签: c# asp.net routing global-asax

当前ASAX代码(简化):

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

void RegisterRoutes(RouteCollection routes)
{
    routes.Add("ContactUsRoute",
               new Route("contact-us", 
               new PageRouteHandler("~/contactus.aspx")));
}

问题

此时从数据库中提取路由是否安全?例如:

void RegisterRoutes(RouteCollection routes)
{
    routes.Add("ContactUsRoute",
               new Route("contact-us", 
               new PageRouteHandler("~/contactus.aspx")));

    // BusinessLogic.GetPageRoutes() returns a List<Route>
    var dbRoutes = BusinessLogic.GetPageRoutes();

    foreach (Route route in dbRoutes)
    {
        routes.Add(route);
    }
}

其他信息

这个问题源于缺乏关于路由的知识以及对global.asax的普遍不熟悉。在过去,我只使用global.asax来完成非常简单的任务; DB 感觉就像我把它带到了另一个层次。

1 个答案:

答案 0 :(得分:1)

  

安全吗

什么是“安全”,为什么不这样呢?

使用字符串构建路由,代码与这些字符串的来源无关,无论是硬编码,资源文件,Web服务,文本文件还是数据库。

只要你确保在数据库不可用时你有一些默认路由显示错误页面,我看不到(除了第一次点击的性能损失)为什么你不这样做就这样。