这个问题可能是由于在使用CreatedAtAction方法时,指定的路由名称与实际控制器方法名称不匹配所导致的。 解决方法是确保指定的路由名称与实际控制器方法名称相匹配。以下是示例代码,可以说明如何正确地使用CreatedAtAction方法:
[HttpPost] [Route("api/products")] public IActionResult Post([FromBody] Product product) { if (product == null) { return BadRequest(); }
// 因为这是一个新产品,所以我们必须将其添加到数据库中
_context.Products.Add(product);
_context.SaveChanges();
// 通过CreatedAtAction方法返回一个HTTP 201响应
return CreatedAtAction("Get", new { id = product.Id }, product);
}
在这个示例中,我们指定路由名称为“Get”,这是一个用于检索具有指定ID的产品的控制器方法名称。这个路由名称与Controller的GET方法中的路由名称匹配,所以我们可以确保CreatedAtAction方法返回HTTP 201响应并包含正确的位置标头。