asp.net – 无法在混合VS环境中正确处理路由
发布时间:2020-12-16 03:16:55 所属栏目:asp.Net 来源:网络整理
导读:我正在使用SPA模板在Visual Studio中创建一个新项目.我的目标是拥有一个Angular / SPA应用程序,它将“托管”/包含一些最终将进行现代化/迁移的遗留应用程序.所以,我在SPA应用程序的页面上有一个iframe,当点击一个菜单项时,我想在iframe中加载一个遗留的ASP.N
我正在使用SPA模板在Visual Studio中创建一个新项目.我的目标是拥有一个Angular / SPA应用程序,它将“托管”/包含一些最终将进行现代化/迁移的遗留应用程序.所以,我在SPA应用程序的页面上有一个iframe,当点击一个菜单项时,我想在iframe中加载一个遗留的ASP.NET应用程序(它必须在iframe中,作为遗留站点使用它们,它的架构依赖于它们).
我无法正确使用路由. SPA模板定义了一个这样的DefaultRoute类(我将RouteExistingFiles更改为true): public class DefaultRoute : Route { public DefaultRoute() : base("{*path}",new DefaultRouteHandler()) { this.RouteExistingFiles = true; } } 我编辑了RouteConfig.cs文件以忽略“aspx”页面请求,如下所示: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.Ignore("*.aspx"); routes.Add("Default",new DefaultRoute()); } } 定义的默认路由处理程序如下所示: public class DefaultRouteHandler : IRouteHandler { public IHttpHandler GetHttpHandler(RequestContext requestContext) { // Use cases: // ~/ -> ~/views/index.cshtml // ~/about -> ~/views/about.cshtml or ~/views/about/index.cshtml // ~/views/about -> ~/views/about.cshtml // ~/xxx -> ~/views/404.cshtml var filePath = requestContext.HttpContext.Request.AppRelativeCurrentExecutionFilePath; if (filePath == "~/") { filePath = "~/views/index.cshtml"; } else { if (!filePath.StartsWith("~/views/",StringComparison.OrdinalIgnoreCase)) { filePath = filePath.Insert(2,"views/"); } if (!filePath.EndsWith(".cshtml",StringComparison.OrdinalIgnoreCase)) { filePath = filePath += ".cshtml"; } } var handler = WebPageHttpHandler.CreateFromVirtualPath(filePath); // returns NULL if .cshtml file wasn't found if (handler == null) { requestContext.RouteData.DataTokens.Add("templateUrl","/views/404"); handler = WebPageHttpHandler.CreateFromVirtualPath("~/views/404.cshtml"); } else { requestContext.RouteData.DataTokens.Add("templateUrl",filePath.Substring(1,filePath.Length - 8)); } return handler; } } 目录结构如下: MySPA > SPA< - 包含SPA应用程序(.net 4.5) 如何设置路由,以便在单击菜单项并发送请求(包含具有查询字符串信息的URL)的.aspx页面时,请求可以路由到旧应用程序? 解决方法
我已经解决了这个问题.这个问题是由几个问题引起的.但是,大多数与我上面的信息有关的问题是……我需要找到正确的方法来忽略新站点的路由代码中对旧版aspx页面的请求.因此,在RouteConfig.cs文件中,我将此ignore语句作为RegisterRoute函数的第一行放置:
routes.Ignore("{*allaspx}",new { allaspx = @".*.aspx(/.*)?"}); 这纠正了主要问题,还有其他一些小问题使情况混淆但是,我已经确定了它们是什么,我正在研究它们.因此,忽略路由功能中的遗留URL是正确的解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – RemoteAttribute验证器不会触发服务器端
- asp.net-mvc-3 – 基于字符串创建ViewBag属性
- 如何调查ASP.net应用程序上的SQL Server超时错误?
- asp.net – 添加新行到datatable的顶部
- ASP.NET虚拟路径映射到另一个不允许的应用程序
- asp.net – Python / web scrape / aspx – 没有表格时人性
- asp.net-mvc – ASP.NET MVC 4 Catch-all仅在本地而不是在远
- asp.net – GridView:选择页面按钮(数字)样式
- asp.net-mvc – 用于子操作的ASP.NET MVC路由匹配
- asp.net – 如何防止低效的SQL查询减慢数据库服务器的速度
推荐文章
站长推荐
热点阅读