当在MVC应用程序中使用路由时,有时会与实际文件夹路径冲突,导致路由无法正常工作。例如,当你请求"/Content"路径时,它实际上是指向网站的物理文件夹中的“Content”文件夹,而不是MVC路由中定义的路径。这种情况下应该采取以下措施来解决这个问题:
routes.MapRoute(
name: "Default",
url: "{*path}",
defaults: new { controller = "Home", action = "Index" }
constraints: new { path = @"^(?!Content|Scripts|bundles|signalr).*$" }
);
这样,当你请求"/Content/Home/Index"时,它将被路由到MVC的根“/”路径,然后你可以在控制器中使用“Content”参数来请求所需的内容。
注意:应该将需要被忽略的文件夹(例如“Content”和“Scripts”)添加到正则表达式的“constraints”约束中。