我有一个通配符路由映射如下:
routes.MapRoute(
null,
"{controller}/{action}/{*category}",
new { controller = "Mall", action = "Index", category = UrlParameter.Optional }
);
这一直工作正常,直到类别在斜杠“/”之前或之后有任何空格为止。
对于艺术/音乐类别,它会发现页面很好。
对于艺术/音乐类别,它会给我一个 404 未找到。
任何帮助将不胜感激!
最佳答案
我刚刚回答了类似的问题 here 。为了完整性:
如果 URL 任何部分末尾的下一个斜杠之前有空格,则会抛出 HttpException
在 System.Web.Util.FileUtil.CheckSuspiciousPhysicalPath()
方法由 MVC 处理,您将收到 HTTP 404 响应。
您可以通过选中 Throw
复选框自行验证这一点在:
-
Visual Studio
-
Debug
-
Exceptions
-
Common Language Runtime Exceptions
一般来说,您的网址中不应有空格。我个人格式化我的网址,所有空格都变成破折号 (-)。
关于asp.net-mvc-2 - ASP.NET MVC 2 通配符路由在处理空格时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3926525/