MVC控制器路由捕获所有请求

时间:2014-05-27 05:23:59

标签: c# asp.net asp.net-mvc-4 controller routing

我有这个代码用于路由:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{*anything}",
                defaults: new { controller = "WebCache", action = "Get" }
            );
        }
    }

它适用于这样的路径:somesite.com/regular/path但是目前我尝试获取图像somesite.com/imagetest.jpg,它总是返回404找不到,甚至不在控制器中输入我的动作。经过一些测试后,我发现如果我插入任何类型的扩展,它会产生这种行为。如何将每个HTTP请求路由到一个控制器中的一个操作? (包括资源)。

我对MVC很陌生,所以如果可能的话,我会喜欢一些涉及基础知识的解释。

2 个答案:

答案 0 :(得分:0)

尝试评论第一个IgnoreRoute语句,如下所示:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        //routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{*anything}",
            defaults: new { controller = "WebCache", action = "Get" }
        );
    }
}

答案 1 :(得分:0)

public class RouteConfigTest
{
    public static void LoadRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(name: "Default", url: "{controller}/{action}/{id}", 
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, catchAll = "" });
    }
}