在PreInit()上映射RouteTable - 它会导致任何问题吗?

时间:2012-12-04 16:34:26

标签: asp.net routes asp.net-4.0

我的页面路线映射根据特定条件而变化。要确定此条件,我需要访问HttpRequest,这意味着我无法在Application_Start()中进行路由映射。在那个说明中,我在我的默认页面上的PreInit()上完成了它,它似乎没有问题。但是,我在路由表中看到的所有示例都是在Application_Start中进行的,这纯粹是为了避免清除路由列表并再次添加它们吗?它会不会对我的Web应用程序造成任何伤害?

编辑:示例:

我根据项目编号加载来自不同文件夹的控件以及是否在移动设备上查看网站,在该笔记中我需要在映射我的路线之前知道这些信息,如下所示:

RouteCollection.MapPageRoute("OneParam", "{Action}.html", String.Format("~/{1}{2}/Default.aspx", ProjectNumber, MobilePathStr));

会映射到~/1234/Mobile/Default.aspx或可以映射到~/1234/Default.aspx

1 个答案:

答案 0 :(得分:0)

不要那样做。

相反,您应该创建自己的RouteBase类,该类为每个请求查找该信息并运行相应的处理程序。

要发送到ASPX页面,您可以return BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page)) as Page;或创建PageRouteHandler并委托给它。