路由不解雇Asp.Net核心

时间:2016-11-01 21:40:05

标签: c# asp.net asp.net-web-api routes asp.net-core

我不确定我的路线有什么问题。当我尝试访问路径时,断点不会触发。

这是googles advanced rest client

的源消息
POST /api/menu HTTP/1.1
HOST: localhost:6223
content-type: application/json
content-length: 34

{ "app_id": 99999, "user_type": 2}

这是我的控制器

[Route("api/[controller]")]
public class MenuController : Controller
{
    private MenuRepo xMenuRepo;
    public MenuController(IOptions<SqlConnectionStringsList> iopt)
    {
        xMenuRepo = new MenuRepo(iopt);
    }

    [HttpPost]
    public IEnumerable<Menu> GetMenuItems([FromBody] MenuQuery menuq)
    {
        List<Menu> xMenuList = new List<Menu>();
        xMenuList = xMenuRepo.GetMenuItems(menuq.app_id, menuq.user_type);
        return xMenuList;
    }
}

public class MenuQuery
{
    public int app_id { get; set; }
    public int user_type { get; set; }
}

我在GetMenuItems放置了一个断点,它甚至没有开火。响应是500内部服务器错误。这个项目只有两个路由,默认的ValuesController和一个新项目,以及这个MenuController。我找不到任何额外的位置来指定项目中的路径,而不是在控制器的顶部。但是ValuesController工作正常!我无法弄清楚出了什么问题!?

1 个答案:

答案 0 :(得分:2)

缺少行动路线

Routing to Controller Actions: Attribute Routing

  

Mixed Routing

     

MVC应用程序可以混合使用传统的路由和属性   路由。通常使用传统路径作为控制器   为浏览器提供HTML页面,为控制器提供属性路由   提供REST API。

     

操作可以是常规路由或属性路由。配售   控制器上的路由或操作使其属性路由。   无法通过以下方式访问定义属性路由的操作   传统路线,反之亦然。上的任何路由属性   controller使控制器属性中的所有操作都被路由。

if (Navigation.ModalStack.Contains(page))
    Navigation.PopModalAsync();
else
    Navigation.PopAsync();