在 Web 中将字符串作为参数传递时找不到控制器端点 API 2 异步放置

Could not find the controller end point when passing a string as a parameter in Web API 2 put as async

控制器代码

[Authorize]
[HttpPut]
[Route("TopHandler/{studentId}")]
public async Task<HttpResponseMessage> CreateClass(string studentId, String projectId)
{
    var response = await Task.Run(() =>
    {
        //  Some Code here
    });

    return response;
}

控制器调用代码

 await VML.Client.PutAsJsonAsync("TopHandler/" + studentId, projectId);

不幸的是,请求找不到这个端点,它给出了 404 我传递一个字符串作为参数。这里可能会出什么问题?

我的理解是,当您调用 PutAsJsonAsync 时,参数会转换为 JSON 并在请求的 BODY 中发送。

我猜您应该将签名更改为:

[Route("TopHandler/{studentId}")]
public async Task<HttpResponseMessage> CreateClass([FromBody]string JSON)