【发布时间】:2016-02-23 17:56:15
【问题描述】:
技术信息
-
AngularJS单页应用 -
Umbraco 7.3.0网站,扩展为通过Umbraco.Core.ApplicationEventHandler在单独的类库中注册路由
场景
我有一个 AngularJS 单页应用程序 (SPA),我正在尝试通过外部 PhantomJS 服务进行预渲染。
我希望MVC 的路由处理程序忽略路由/?_escaped_fragment_={fragment},因此request can be handled directly by ASP.NET 并因此传递给IIS 以代理请求。
理论上
-
Umbraco建立在ASP.NET MVC之上。 - 可以通过
System.Web.Routing.RouteCollection类配置路由。 - 使用自定义路由扩展
Umbraco时,通过System.Web.Routing.RouteTable配置的任何路由都将优先于Umbraco 路由,因此Umbraco**永远不会处理 - 我的方案的可能方法
**我可能是错的。据我所知,自定义路由优先,因为它是在注册 Umbraco 路由之前完成的。但是我不确定告诉MVC 忽略一条路线是否也会阻止 Umbraco 处理该路线。
实践中
我试图忽略以下路线:
尝试一:
routes.Ignore("?_escaped_fragment_={*pathInfo}");
这会引发错误:The route URL cannot start with a '/' or '~' character and it cannot contain a '?' character.
尝试二:
routes.Ignore("{*escapedfragment}", new { escapedfragment = @".*\?_escaped_fragment_=\/(.*)" });
这并没有导致错误,但是 Umbraco 仍然收到请求并将我的根页面交还给我。 Regex validation on Regexr.
问题
-
MVC真的可以忽略基于其query string的路由吗? - 我对@987654353@ 路由的了解是否正确?
- 我的
regex正确吗? - 还是我错过了什么?
【问题讨论】:
标签: c# asp.net regex asp.net-mvc umbraco