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。
我什至在 .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。