C# ASP.NET Webforms路由-如何停止路由尾随斜杠?
给定以下代码,在我的ASP.NET webform应用程序中C# ASP.NET Webforms路由-如何停止路由尾随斜杠?,c#,asp.net,routing,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 有什么办法可以防止这种情况发生吗?在我看来
void foo(RouteCollection routes){
routes.MapPageRoute(string.Empty, "testroute", "~/hello.aspx", false);
}
问题是,http://localhost/testroute
路由到hello.aspx
,http://localhost/testroute/
还将路由到hello.aspx
有什么办法可以防止这种情况发生吗?在我看来,最好的办法就是确保您的网站在其
标记中使用一致的URL。不要担心进入路由机制的无关路径,而是集中精力确保只为链接使用所需的URL模式
例如,确保您的网站不包含任何带有href=“/testroute/”
的
标记,并且它是否响应该标记并不重要
正如我在评论中指出的,URL路径部分末尾的尾随斜杠实际上是标准的,没有效果;你可以包括它,也可以不包括它。这意味着两个“不同”的URL可以加载相同的页面:/page.aspx
和/page.aspx/
都加载相同的内容。但这里还有另一个类似的长期传统,默认文档;也就是说,/
和/default.aspx
将倾向于加载相同的内容
当然,这种情况下的解决方案与这里的解决方案相同:只需确保您的
标记使用一致的、单一版本的URL即可
作为记录,您可以做一些检测尾部斜杠并发出301重定向的操作,但我认为确保与URL一致要容易得多。在我看来,最好的方法就是确保您的网站在其
标记中使用一致的URL。不要担心进入路由机制的无关路径,而是集中精力确保只为链接使用所需的URL模式
例如,确保您的网站不包含任何带有href=“/testroute/”
的
标记,并且它是否响应该标记并不重要
正如我在评论中指出的,URL路径部分末尾的尾随斜杠实际上是标准的,没有效果;你可以包括它,也可以不包括它。这意味着两个“不同”的URL可以加载相同的页面:/page.aspx
和/page.aspx/
都加载相同的内容。但这里还有另一个类似的长期传统,默认文档;也就是说,/
和/default.aspx
将倾向于加载相同的内容
当然,这种情况下的解决方案与这里的解决方案相同:只需确保您的
标记使用一致的、单一版本的URL即可
作为记录,您可以检测尾随斜杠并发出301重定向,但我认为确保与URL一致更容易。您有更多路由规则吗?还是这一个?啊,很抱歉,我给出的示例用例没有任何意义,我现在已经更正了。好了,现在更有意义了!顺便说一句,为什么这是个问题?通常情况下,不管URL是否有尾随斜杠,服务器实际上不会对URL进行不同的处理;即使URL是一个文件。例如,您可以加载
/hello.aspx
和/hello.aspx/
并获得相同的结果。此外,请确保使用@AndrewBarber回复我,以便通知我。或者在任何人的名字前面加上@符号以通知他们。我们不需要对你这样做,因为我们正在回复你的帖子;评论发布到的帖子的所有者会被自动通知。@AndrewBarber-谢谢你的提示!在某种程度上,这是为了美观。你是说这是不可能的吗?你有更多的路由规则吗?还是这一个?啊,很抱歉,我给出的示例用例没有任何意义,我现在已经更正了。好了,现在更有意义了!顺便说一句,为什么这是个问题?通常情况下,不管URL是否有尾随斜杠,服务器实际上不会对URL进行不同的处理;即使URL是一个文件。例如,您可以加载/hello.aspx
和/hello.aspx/
并获得相同的结果。此外,请确保使用@AndrewBarber回复我,以便通知我。或者在任何人的名字前面加上@符号以通知他们。我们不需要对你这样做,因为我们正在回复你的帖子;评论发布到的帖子的所有者会被自动通知。@AndrewBarber-谢谢你的提示!在某种程度上,这是为了美观。你是说这不可能吗?