Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET Webforms路由-如何停止路由尾随斜杠?_C#_Asp.net_Routing - Fatal编程技术网

C# ASP.NET Webforms路由-如何停止路由尾随斜杠?

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 有什么办法可以防止这种情况发生吗?在我看来

给定以下代码,在我的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


有什么办法可以防止这种情况发生吗?

在我看来,最好的办法就是确保您的网站在其
标记中使用一致的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-谢谢你的提示!在某种程度上,这是为了美观。你是说这不可能吗?