PUT、DELETE 对 ASP.NET 核心 Web API 模板不起作用(错误 404)

PUT, DELETE Not Working (error 404) for ASP.NET core Web API Templates

我什至在 .config 文件中尝试了几次修改以启用这些动词,但没有任何效果。 GET 方法工作正常,但 PUT 和 DELETE 为 404。

我已经尝试删除 WebDav 模块和其他 IIS 相关修改。

这是我的控制器:

[HttpPut("{id:length(24)}")]
public IActionResult Update(string id, Client clientIn)
{
    var client = _clientService.Get(id);

    if (client == null)
    {
        return NotFound();
    }

    _clientService.Update(id, clientIn);

    return NoContent();
}

[HttpDelete("{id:length(24)}")]
[Route("api/Clients/{id}")]
public IActionResult Delete(string id)
{
    var client = _clientService.Get(id);

    if (client == null)
    {
        return NotFound();
    }

    _clientService.Remove(client.ClientId);

    return NoContent();
}

不知道你的HttpGet是怎么设置的。在这段代码中,因为你限制了id的长度,所以id最多只能是24个字符才能被映射。你可以这样改。

    [HttpPut("{id:maxlength(24)}")]
    public IActionResult Update(string id, Client clientIn)
    {
        //
    }

你可以参考这个route constraints