ASP.NET Webforms路由 - 如何停止斜线被路由?

时间:2012-11-29 11:32:57

标签: c# asp.net routing

在我的ASP.NET webform应用程序中给出以下代码;

void foo(RouteCollection routes){
   routes.MapPageRoute(string.Empty, "testroute", "~/hello.aspx", false);
}

问题是,当http://localhost/testroute路由到hello.aspx时,http://localhost/testroute/也会路由到hello.aspx。

有没有阻止这个?

1 个答案:

答案 0 :(得分:1)

在我看来,最好的办法就是确保您的网站在其<a>代码中使用一致的网址。不要担心路由机制中的无关路径,而是集中精力确保只使用链接所需的URL模式。

例如,请确保您的网站不包含<a>href="/testroute/"个标记,并且它对此做出响应无关紧要。

正如我在评论中所指出的,实际上标准是URL的路径部分末尾的尾部斜杠没有效果;你可以包括它,或不包括它。这意味着两个“不同”的网址可以加载相同的网页:/page.aspx/page.aspx/都会加载相同的内容。但是,这里还有另一个类似的长期传统,默认文件;也就是说,//default.aspx会倾向于加载相同的内容。

在这种情况下,解决方案与此处的解决方案相同:只需确保您的<a>代码使用您要使用的一致的单一版本的网址。


对于记录,您可以执行一些检测尾部斜杠并发出301重定向的内容,但我认为确保您与URL保持一致会更容易。