2

我有一个 Web API,它允许使用 GET/POST/PUT 进行基本 CRUD,但还包含通过以下方式访问的子对象/apipath/MyObject/{objectId}/SubObject/{subObjectId}

添加子对象使用此方法

    [HttpPost]
    [Route("{id}/Members")]
    [Produces(typeof(TeamMember))]
    public IActionResult AddTeamMember(Guid id, [FromBody] TeamMember teamMember)
    { 
      //some processing here.
      return CreatedAtAction(nameof(GetMember), new { id, memberId = teamMember.Id }, teamMember);
    }

GetMember 方法如下所示

    [HttpGet]
    [Route("{id}/Members/{memberId}")]
    public IActionResult GetMember(Guid id, Guid memberId)
    { //processing here
    }

调用 CreatedAtActionAddTeamMember会抛出一个

'System.InvalidOperationException':没有路由匹配提供的值。

如果我更改 Route 标记GetMember以排除成员部分,它可以工作。Members那么,我如何告诉 CreatedAtAction在 id 和 之间应该有一个memberId

4

0 回答 0