0

在我的 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)

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

MVC 路由完全超出了我的理解能力。

4

1 回答 1

2

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

我建议将您的第一条路线更改为在开头包含 API/ ,如下所示:

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

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

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

于 2012-05-02T12:43:30.543 回答