仅在没有后缀的URL上指定Route

时间:2012-10-24 00:46:38

标签: c# asp.net vb.net url-routing

我正在使用ASP.NET 4.5并在我的Global.asax文件中使用以下路由规则:

RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}", "~/default.aspx")

我要完成的是重定向动态生成的URL,格式如下:

  

http://myurl.com/firstnamelastname

以下是人们的实际情况:

  

http://myurl.com/davemackey

我的问题是以上重定向所有请求 - 例如到axd或jpg文件。现在我可以为每个其他类型的文件添加排除项,如下所示:

RouteTable.Routes.Ignore("{resource}.axd/*pathInfo}")

但这会容易出错且乏味(例如,如果有人在项目中添加了另一种文件类型会发生什么?)。

所以,我想做的是这样的事情:

RouteTable.Routes.MapPageRoute("defaultRoute", "{*value}(where no suffix)", "~/default.aspx")

或者,用我的英语清楚:

  

如果URL没有后缀,则使用defaultRoute重定向到〜/ default.aspx

关于如何做到这一点的任何想法?

==

更新

我发现了MSDN article。似乎使用约束可能有助于实现我上面所说的......但我不确定如何......

==

更新2:

我现在有一个可以通过的解决方案。我添加了以下内容:

RouteTable.Routes.Ignore("{path}/{value}")

由于图像和其他文件保存在子目录中,因此强制排除它们。不过,我对此有两个担忧

  1. 如果路径长于单个子目录,例如,图片/人/ person.jpg?
  2. 如果文件被放入主根(不应该,但可能会发生),这是一个jpg或等等。

0 个答案:

没有答案