2010-10-13 76 views
4

我有一个通配符映射的路线如下:ASP.NET MVC 2通配符路由具有故障处理空间

 routes.MapRoute(
      null, 
      "{controller}/{action}/{*category}", 
      new { controller = "Mall", action = "Index", category = UrlParameter.Optional } 
     ); 

这一直工作正常,直到该类别有任何空格之前或之后斜杠“/” 。

对于类别艺术/音乐,它会发现页面正常。

对于类别艺术/音乐,它会给我404找不到。

任何帮助将不胜感激!

回答

2

我刚刚回答了同样的问题here。为了完整性:

如果在下一个斜杠前的URL的任何部分的末尾有一个空白空间,则会在由MVC处理的System.Web.Util.FileUtil.CheckSuspiciousPhysicalPath()方法中抛出HttpException,您将得到HTTP 404响应。

您可以验证自己被选中复选框Throw在:

  1. Visual Studio
  2. Debug
  3. Exceptions
  4. Common Language Runtime Exceptions

一般来说,你不应该在空的空间您的网址。我亲自格式化我的网址,所有的空间变成一个破折号( - )。

+0

一种无赖,因为我不想回去和重做整个项目,因为这些是用户输入的项目创建的网址。我想这是有道理的,我会在将来记住它。谢谢马丁! ps - 对于接受缓慢感到抱歉。 – 2011-02-10 12:17:08