C# 为什么此MVC路由不起作用(ASP.Net Core 2.2)
我的ASP.Net核心项目中有以下API控制器:C# 为什么此MVC路由不起作用(ASP.Net Core 2.2),c#,asp.net,asp.net-mvc,asp.net-core,asp.net-core-mvc,C#,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,我的ASP.Net核心项目中有以下API控制器: [Authorize] [Route("api/[controller]/[action]")] [ApiController] public class PermissionsController : ControllerBase { private readonly PlanraumContext _context; public PermissionsController(PlanraumContext context)
[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/权限/组/获取?folderId=6811
- api/权限/组/获取
- api/permissions/get?folderId=6811
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
因为您正在控制器中放置操作路线 请这样做 在控制器级别上
[Authorize]
[Route("api/[controller]")]
行动层面
[HttpGet("group/[action]/{folderId}")]
如果你不需要团队,那就去做吧
[HttpGet("[action]/{folderId}")]
在您的代码中,
url
将是您在controller
级别和action
级别上定义的内容
应用于以/或~/开头的操作的路由模板不与应用于控制器的路由模板组合
您可以在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));
}
}
首先,我将删除
HttpGet
属性中的参数,您可能会因为路由不匹配而失败。更改为[HttpGet]
您正在混合属性和常规属性