我需要通過資料庫中的 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/}
uj5u.com熱心網友回復:
您需要通過洗掉 {Customer} 來修復您的操作路由,因為您在請求正文中發送客戶,而不是作為路由值
[Route("~/api/Customer")]
并要求
var sum = await client.PutAsJsonAsync("/api/Customer", customer);
或者更好地將動作路線名稱修復為有意義的
[Route("~/api/EditCustomer")]
和
var sum = await client.PutAsJsonAsync("/api/EditCustomer", customer);
uj5u.com熱心網友回復:
我不是 Web API 的專家,但我懷疑這可能是因為 API 期望customer在請求 URL 中。
嘗試將 API 路由更改為 [Route("api/[controller]")]
這可能是一個評論,但我沒有足夠的聲譽:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329312.html
標籤:C# json asp.net核心 asp.net-core-webapi
