【发布时间】:2015-08-01 10:42:15
【问题描述】:
我的路由有问题。我试图防止 404 错误最终出现在我的自定义路由约束中。
这是我的一些路线:
routes.IgnoreRoute("Content/{*pathInfo}");
routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" });
routes.MapRoute(
name: "MenuRoute",
url: "{*permalink}",
defaults: new { controller = "Menu", action = "Index" },
constraints: new { permalink = new MenuUrlConstraint() }
);
我的问题是每次静态文件出现 404 时,它们都会转到我的 MenuRoute。
我有办法避免这种情况发生吗?
或者是在我的路由约束中检查 404 的唯一解决方案,如果是,则不执行任何操作?
-----编辑----
public class MenuUrlConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
var db = new ApplicationDbContext();
var permalink = values[parameterName] != null ? values[parameterName].ToString() : "";
return db.MenuItems.Any(p => p.Url == permalink && p.Published == true);
}
}
【问题讨论】:
标签: c# asp.net-mvc routes