MVC路由匹配除了资源之外的所有路由

本文关键字:路由 MVC 资源 | 更新日期: 2023-09-27 18:19:08

我有一个angularJS应用程序。我创建了一个返回渲染索引的控制器/动作。CSHTML。这是我唯一的mvc4控制器。我将webapi用于所有其他行为。客户端应该只处理路由。到目前为止运行良好。

RouteExistingFiles = false;
routes.MapRoute(
    name: "Default",
    url: "{*url}",
    defaults: new { controller = "Index", action = "Index" }
);

问题是这个解决方案匹配像"localhost/favicon.ico, localhost/template.html"这样的资源。我可以阻止或忽略所有这样的请求吗?

MVC路由匹配除了资源之外的所有路由

您可以使用IgnoreRoute,以便路由模块忽略对这些资源的请求,例如:

routes.IgnoreRoute("favicon.ico");
routes.IgnoreRoute("{templateName}.html");

这些必须在您当前的Default路由之前添加。

你可以尝试这样做,然后路由模块忽略对任何.html.ico文件的请求:-

routes.IgnoreRoute("{*allhtml}", new {allhtml=@".*'.html(/.*)?"});
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"})