asp.net MVC - 无法理解为什么路由不起作用

时间:2012-05-02 12:37:22

标签: asp.net-mvc asp.net-mvc-routing asp.net-web-api

在我的ASP.NET Web API项目中,我在Global.asax中定义了以下路由:

routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "{controller}/{action}"
            );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}"
            );

我有一个名为UserFeedController的控制器,其操作具有以下签名:

public UserFeedResponseViewModel GetUserFeed(int id)

当我输入网址http://api.mydomain.com/UserFeed/GetUserFeed/4时,我收到404.为什么第二个路由规则不适用?

MVC路由完全无法理解。

1 个答案:

答案 0 :(得分:2)

你的两条路线基本相同。 MVC找到第一个匹配的路由,因为你已经指定了一个控制器和一个动作,它认为你很好。它将忽略您指定的id(我相信它可能会尝试将其作为参数传递)。

我建议改变你的第一条路线,在开头包括API /,如下:

routes.MapHttpRoute( 
            name: "DefaultApi", 
            routeTemplate: "API/{controller}/{action}" 
        ); 

        routes.MapHttpRoute( 
            name: "Default", 
            url: "{controller}/{action}/{id}" 
        ); 

这将确保您的路线正常运作。