【发布时间】:2020-12-14 16:23:50
【问题描述】:
我有两个主控制器(还有第三个,auth,但这不会导致路由错误)。一个是在父级操作,另一个是在子级操作的api控制器。我不会粘贴所有控制器代码,因为它不是必需的,只是路由。
父级有 3 条基本路线。一个获取对象列表,一个获取单个对象,一个创建新记录:
[Route("api/npos")]
[ApiController]
// GET NPO LIST
[HttpGet()]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetNPOs([FromQuery] PagingParams paging) // code
// GET NPO BY ID
[HttpGet("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetNPOById(int id) // code
[Route("CreateNPO")]
[HttpPost]
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> CreateNPO([FromBody] NPOtoCreateDto createDto) // code here
子路由是操作npos中的用户列表,本身有几条路由。
[Route("api/npos/{npoId}/users")]
[ApiController]
// GET USER LIST FOR NPO
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetUsersForNPO(int npoId) // code
[HttpPost]
public async Task<IActionResult> AddUserToNPO(int npoId, string userId) // code
[HttpDelete]
public async Task<IActionResult> RemoveUserFromNPO(int npoId, string userId) // code
当我通过 IIS Express 运行项目时,Startup CS 中的UseEndpoints 方法抛出:
System.ArgumentException: 'The route parameter name 'npoId' appears more than one time in the route template. (Parameter 'routeTemplate')'
有什么帮助吗?我认为我的路线配置相当可靠。
【问题讨论】:
-
您好!对不起。我还没有机会测试它,但我会的。
-
嗨@J.G.Sable,你有更新吗?
标签: .net api asp.net-core asp.net-apicontroller