【发布时间】:2014-10-17 02:54:38
【问题描述】:
我成功使用了 ASP.NET 友好 URL,但我需要忽略特定 Foo.aspx 页面的路由(因为此页面需要 POST 数据,并且一旦重新路由 POST 数据在 Page_Load() 中不再可用!)。
看起来使用 ASP.NET 友好 URL 会丢弃任何忽略路由的尝试。一旦使用了 ASP.NET 友好 URL 路由,即使是用于忽略路由的 MSDN example 也不起作用:
routes.Ignore("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
忽略到Foo.aspx 的路由,代码应该是这样的,不是吗?
routes.Ignore("{*fooaspx}", new { fooaspx = @"(.*/)?foo.aspx(/.*)?" });
Global.asax 代码如下所示:
public static void RegisterRoutes(RouteCollection routes) {
// This doesn't work whether I put this code before or after ASP.NET Friendly URLs code.
routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
routes.Canonicalize().Lowercase();
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
void Application_Start(object sender, EventArgs e) {
RegisterRoutes(RouteTable.Routes);
}
这个问题has been asked on the ASP.NET Friendly URLs codeplex site,但没有得到答案。
感谢您对此的帮助:)
【问题讨论】:
-
我的理解是如果存在物理文件,那么它优先(高于任何路由配置),那么为什么要“重新路由”/重定向?跨度>
-
ASP.NET 友好 URL 代码对所有存在的物理文件 .aspx 文件(包括 site\Foo.aspx)进行重定向工作。例如 url 'Site.com\Foo-Bar.aspx' 被重定向到 'site.com\foo-bar' 并且 Foo-Bar.aspx 文件存在。这怎么能解释 routes.Ignore() 不起作用?
标签: asp.net routes friendly-url