繁体   English   中英

为什么此MVC路由不起作用(ASP.Net Core 2.2)

[英]Why is this MVC route not working (ASP.Net Core 2.2)

我的ASP.Net Core项目中具有以下API控制器:

[Authorize]
[Route("api/[controller]/[action]")]
[ApiController]
public class PermissionsController : ControllerBase
{
    private readonly PlanraumContext _context;

    public PermissionsController(PlanraumContext context)
    {
        _context = context;
    }

    [HttpGet("api/[controller]/group/[action]")]
    public ActionResult Get(int folderId)
    {
        return Ok(new PermissionHelper(_context).GetGroupPermissions(folderId));
    }
}

不幸的是,我无法访问我的函数“ Get”。 我尝试了以下路径

  • API /许可/组/ GET?folderId = 6811
  • API /许可/组/ GET
  • API /许可/ GET?folderId = 6811

所有这些都返回404错误。

我的路线有什么问题吗? 我没有在startup.cs中配置任何特定的东西

app.UseMvc(routes =>
{
    routes.MapRoute(
              name: "default",
              template: "{controller=Home}/{action=Index}/{id?}");
});

在您的代码中, url将是您在controller级别和action级别上定义的内容的组合

应用于/或〜/开头的动作的路径模板不会与应用于控制器的路径模板组合在一起。

您可以在操作中定义[Route("/api/[controller]/group/[action]")] ,该action将忽略controller级路由。

[Authorize]
[Route("api/[controller]/[action]")]
[ApiController]
public class PermissionsController : ControllerBase
{
    private readonly PlanraumContext _context;

    public PermissionsController(PlanraumContext context)
    {
        _context = context;
    }

    [Route("/api/[controller]/group/[action]")]
    [HttpGet]
    public ActionResult Get(int folderId)
    {
        return Ok(new PermissionHelper(_context).GetGroupPermissions(folderId));
    }
}

因为您要在控制器中放置行动路线,请以这种方式进行

在控制器级别

[Authorize]
[Route("api/[controller]")]

在行动层面

[HttpGet("group/[action]/{folderId}")]

如果您不需要分组,就简单地

[HttpGet("[action]/{folderId}")]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM