我尝试了几次修改,甚至在.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)
{
//
}
你可以参考这个路由约束。