【问题标题】:Why is this MVC route not working (ASP.Net Core 2.2)为什么这条 MVC 路由不起作用(ASP.Net Core 2.2)
【发布时间】:2019-09-04 07:59:29
【问题描述】:

我的 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));
    }
}

很遗憾,我无法访问我的“获取”功能。我尝试了以下路径

  • api/permissions/group/get?folderId=6811
  • api/permissions/group/get
  • api/permissions/get?folderId=6811

而且它们都返回 404 错误。

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

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

【问题讨论】:

  • 我将首先删除HttpGet 属性中的参数,您可能会因路由不匹配而失败。改为[HttpGet]
  • 你在混合属性和常规routing

标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-mvc


【解决方案1】:

在您的代码中,url 将是您在controller 级别和action 级别上定义的combination

应用于以 / 或 ~/ 开头的操作的路由模板不会与应用于控制器的路由模板组合。

您可以在action 上定义[Route("/api/[controller]/group/[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));
    }
}

【讨论】:

    【解决方案2】:

    因为您在控制器中放置了动作路线 请这样做

    在控制器级别

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

    在行动层面

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

    如果你不需要组而不是简单地做

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

    【讨论】:

      猜你喜欢
      • 2011-12-07
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 2016-03-23
      • 2014-12-16
      • 1970-01-01
      相关资源
      最近更新 更多