Web Api两个不同控制器的路由冲突?

时间:2016-10-29 13:12:37

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

好吧,我正在使用带有属性路由的ASP.NET Web API 2。我有两个控制器,它们的路线差别很小:

[RoutePrefix("api/menus")]
public class MenusController : ApiController {
}

[RoutePrefix("api/menus/items")]
public class MenuItemsController : ApiController {
}

我在两个控制器中都有所有CURD方法。现在除了POST之外,所有方法都正常工作。每当我尝试调用POST的{​​{1}}方法时,我都会收到以下错误:

MenuItemsController

有趣的是,Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL.的{​​{1}}方法完全正常。它只是导致问题的POST MenusController方法。 我也尝试使用MenuItemsController的{​​{1}}属性,但是徒劳无功。

非常感谢任何帮助。

修改 我的POST方法“路线如下:

  • Order
  • Route

1 个答案:

答案 0 :(得分:1)

Aneeq 尝试加入两个控制器:

[RoutePrefix("api/menus")]
public class MenusController : ApiController
{
    [Route("")]
    public string Get()
    {
        return "menus";
    }
}

[RoutePrefix("api/menus")]
public class MenuItemsController : ApiController
{
    [Route("items")]
    public string Get()
    {
        return "menus items";
    }
}

我已经测试并且工作正常。这很酷吗?

PS:我使用“Get”来简化解决方案。