【问题标题】:Creating routes from DB records从数据库记录创建路由
【发布时间】:2013-02-28 05:24:55
【问题描述】:

当前的 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 我也想知道!但另一方面:您还应该在哪里注册路线? try..catch 当然是个好主意。
  • @Yuck,好问题。请参阅其他信息。我要补充一点,最近的职位变动使我成为组织中唯一的开发人员。有时,很难没有人来提出想法。

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


【解决方案1】:

安全吗

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

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

只要您确保在数据库不可用时设置了一些默认路由以显示错误页面,我看不出(可能除了第一次命中时的性能损失)您为什么不这样做就这样吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多