【发布时间】:2021-12-08 04:19:00
【问题描述】:
我需要通过 API 调用在我的数据库中保存我在模型中所做的更改。当我在 Web 上单独运行它时,我检查了我的 API 工作正常。但它给了我一个错误StatusCode: 405, ReasonPhrase: 'Method Not Allowed'。我正在尝试发送和反对并尝试查看请求是否已完成。当我尝试调试它时,它没有在我的 API 控制器上发送命中。
这是我的模型类:
public class Customer
{
[Required]
public Guid CustomerId { get; set; }
public int Age { get; set; }
public int Phone { get; set; }
}
API 中的 PUT 方法:
[HttpPut]
[Route("api/[controller]/{customer}")]
public IActionResult EditCustomer(Customer customer)
{
var cust = _customerData.EditCustomer(customer);
if (cust == string.Empty)
{
return Ok();
}
else
{
return new StatusCodeResult(StatusCodes.Status500InternalServerError);
}
}
我在项目中调用API的方法:
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(apiBaseUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")
);
var sum = await client.PutAsJsonAsync("api/Customer/", customer);
if (sum.StatusCode == System.Net.HttpStatusCode.OK)
{
return RedirectToActionPermanent(actionName: "SingIn");
}
else
{
TempData["msg"] = "There is an error";
return View();
}
其中基地址= {https://localhost:44398/}
EditCustomer 方法
public string EditCustomer(Customer customer)
{
try
{
var pro = _customerContext.Customer.Where(e => e.CustomerId == customer.CustomerId).FirstOrDefault();
pro.Age = customer.Age;
pro.Phone = customer.Phone;
pro.Name = customer.Name;
_customerContext.Entry(pro).State = EntityState.Modified;
_customerContext.SaveChanges();
}
catch(Exception e)
{
return e.Message;
}
return string.Empty;
}
【问题讨论】:
-
嗨@Psychonaut007,我建议你可以分享你的EditCustomer对应的控制器。另外请检查您的
customer是否具有正确的值。 -
你好@Rena 我已经分享了上述方法,但问题是我一开始没有在控制器中收到点击。
标签: c# json asp.net-core .net-core asp.net-core-webapi