【发布时间】:2013-03-13 08:58:35
【问题描述】:
我刚刚在ASP.NET MVC 中学习使用路由,并且正在尝试理解 IgnoreRoute 方法。
我试图阻止用户访问"Content/{filename}.html"。我已将此作为我的 RegisterRoutes 方法中的第一个调用。这是我的代码:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("Content/{filename}.html");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "^.*", action = "^Index$|^About$" },
new[] { "UrlsAndRoutes.AditionalControllers" });
routes.MapRoute("MyRoute2", "{controller}/{action}/{id}/{*catchall}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new { controller = "^.*", action = "^Index$|^About$" },
new[] { "UrlsAndRoutes.Controllers" });
routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" });
routes.MapRoute("ShopSchema", "Shop/{action}", new { controller = "Home" });
routes.MapRoute("", "X{controller}/{action}");
routes.MapRoute(
name: "",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
}
如果我尝试访问 localhost:53907/Content/Static.html 之类的链接,它不应该让我根据我目前的理解显示该文件,但它确实会显示它。
我做错了什么?
【问题讨论】:
-
还有什么问题?
-
你试过了吗? routes.IgnoreRoute("Content/{*pathInfo}.html");
-
如果我尝试访问这样的链接:localhost:53907/Content/Static.html 它不应该让我根据我目前的理解显示该文件,但它确实显示它
-
尝试后:routes.IgnoreRoute("Content/{*pathInfo}.html");我收到此错误:包含多个部分(例如文字部分或参数)的路径段不能包含包罗万象的参数。
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing