[英]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”。 我尝试了以下路径
所有这些都返回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.