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



我的页面路由映射会根据某些条件而变化。要确定此标准,我需要访问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.

不要那样做。

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

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

相关内容

最新更新