0

我正在使用 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 文章。似乎使用约束可能有助于实现我上面所说的......但我不确定如何......

==

更新 2:

目前我有一个可以接受的解决方案。我添加了以下内容:

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

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

  1. 如果路径长于单个子目录(例如 images/people/person.jpg)怎么办?
  2. 如果将文件放置在 jpg 等的主根目录中(不应该,但它可能会发生)怎么办?
4

0 回答 0