路由不触发Asp.净的核心

本文关键字:核心 Asp 路由 | 更新日期: 2023-09-27 18:15:48

我不知道我的路线出了什么问题。当我试图访问路由时,断点没有触发。

这是来自google高级rest客户端的源消息

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工作了!我不知道出了什么问题!

路由不触发Asp.净的核心

缺少动作路由

路由到控制器动作:属性路由

混合路由

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

操作要么按约定路由,要么按属性路由。放置控制器或动作上的路由使其属性路由。定义属性路由的操作不能通过传统路线,反之亦然。的任何路由属性控制器使控制器属性中的所有动作路由。

[Route("api/[controller]")]
public class MenuController : Controller
{
    private MenuRepo xMenuRepo;
    public MenuController(IOptions<SqlConnectionStringsList> iopt)
    {
        xMenuRepo = new MenuRepo(iopt);
    }
    //POST api/menu
    [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;
    }
}