当前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 感觉就像我把它带到了另一个层次。
答案 0 :(得分:1)
安全吗
什么是“安全”,为什么不这样呢?
使用字符串构建路由,代码与这些字符串的来源无关,无论是硬编码,资源文件,Web服务,文本文件还是数据库。
只要你确保在数据库不可用时你有一些默认路由显示错误页面,我看不到(除了第一次点击的性能损失)为什么你不这样做就这样。