【问题标题】:asp.net MVC - cannot understand why routing is not workingasp.net MVC - 无法理解为什么路由不起作用
【发布时间】:2012-05-02 12:37:21
【问题描述】:

在我的 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 路由超出了我的理解能力。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 天哪!直到现在我才注意到代码调用了两个单独的方法:MapRoute()MapHttpRoute()。为什么 Web API 控制器的路由处理方式不同?!我已将代码更改为始终使用MapHttpRoute(),现在我得到了我期望的行为......
    猜你喜欢
    • 1970-01-01
    • 2016-03-23
    • 2014-12-16
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多