【发布时间】:2022-11-10 22:07:16
【问题描述】:
我已经为人员构建了一个连接到数据库的 Web API。我现在正试图从一个单独的 MVC 应用程序调用这个 Web API,它应该有完整的 CRUD。到目前为止,我已经设法使用 Get 和 Post-methods 来创建一个新人员并查看数据库中当前人员的列表。
当尝试对 Put-method 进行类似调用时,我收到以下错误:
这就是我的方法 UpdatePerson 在我的 API 应用程序中的编写方式:
[HttpPut]
[Route("{id:guid}")]
public async Task<IActionResult> UpdatePerson([FromRoute] Guid id, UpdatePersonRequest updatePersonRequest)
{
var person = await dbContext.Persons.FindAsync(id);
if (person != null)
{
person.Name = updatePersonRequest.Name;
person.Email = updatePersonRequest.Email;
person.Phone = updatePersonRequest.Phone;
person.Address = updatePersonRequest.Address;
await dbContext.SaveChangesAsync();
return Ok(person);
}
这就是我尝试在单独的 MVC 项目中使用 API 的方式:
[HttpGet]
public IActionResult Edit()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Edit(PersonViewModel pvm)
{
HttpClient client = new();
StringContent sContent = new StringContent(JsonConvert.SerializeObject(pvm), Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PutAsync("https://localhost:7281/api/Persons/", sContent);
response.EnsureSuccessStatusCode();
if (response.IsSuccessStatusCode)
{
return RedirectToAction("Get");
}
else
{
return NotFound();
}
}
当我尝试通过 API 应用程序更新数据库时,一切正常,所以我不确定我的请求有什么问题。我希望这里的人可以立即发现问题或至少帮助我,因为我是 WEB API 的初学者。
我主要尝试更改我的 MVC 项目中的 URL,但问题仍然存在。
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api