状态代码:405,原因短语:'Method Not Allowed'



我正在构建一个Web应用程序,以消耗REST完整的API ASP.NET Core Web服务,当我更新记录时,我有问题。我正在尝试通过ASP.NET Core Application从API ASP.NET CORE中调用PUT方法

我有一个nullReferenceException:对象引用未设置为对象的实例。

public async Task<IActionResult> UpdateEmployee(int id)
{
    Employee employee = new Employee();
    using(var httpClient=new HttpClient())
    {
        using(var response = await httpClient.GetAsync("myURI/employee/" + id))
        {
             string apiResponse = await 
             response.Content.ReadAsStringAsync();
             employee = JsonConvert.DeserializeObject<Employee>apiResponse);
        }
    }
    return View(employee);                   
}

[HttpPost]
public async Task<IActionResult> UpdateEmployee(Employee employee)
{
    Employee receivedemployee = new Employee();
    using(var httpClient=new HttpClient())
    {
        var content = new MultipartFormDataContent();
       content.Add(new             
        StringContent(employee.EmployeeId.ToString(),Encoding.UTF8, 
            "application/json"), "id");
            content.Add(new 
        StringContent(employee.FirstName,Encoding.UTF8, 
          "application/json"),"FirstName");
            content.Add(new StringContent(employee.LastName, 
         Encoding.UTF8, "application/json"), "LastName");
            content.Add(new StringContent(employee.DateOfBirth.ToString(), 
            Encoding.UTF8, "application/json"), "Email");
            content.Add(new StringContent(employee.PhoneNumber, 
            Encoding.UTF8, "application/json"), "DateOfBirth");
            content.Add(new StringContent(employee.Email, Encoding.UTF8, 
           "application/json"), "Email");
            using (var response = await httpClient.PutAsync("myURI/api/employee", content))
            {
                string apiResponse = await response.Content.ReadAsStringAsync();
                ViewBag.Result = "Success";
                receivedemployee = JsonConvert.DeserializeObject<Employee>(apiResponse);
            }
            return View(receivedemployee);
        }
     }
}

我希望更新记录

我稍微清理了您的代码。这样尝试

我使用块删除了不必要的,并使用单个" application/json"编码序列化您的员工类。

public async Task<IActionResult> UpdateEmployee(int id)
{
    Employee employee = new Employee();
    var httpClient = new HttpClient();
    var request = new HttpRequestMessage
      (HttpMethod.Get, $"myURI/employee/{id}");
    var response = await httpClient.SendAsync(request);
    string apiResponse = await response.Content.ReadAsStringAsync();
    employee = JsonConvert.DeserializeObject<Employee>(apiResponse);
    return View(employee);
}
[HttpPost]
public async Task<IActionResult> UpdateEmployee(Employee employee)
{
    Employee receivedEmployee = new Employee();
    var httpClient = new HttpClient();
    var request = new HttpRequestMessage(HttpMethod.Put, $"myURI/employee/{employee.EmployeeId}")
    {
         Content = new StringContent(new JavaScriptSerializer().Serialize(employee), Encoding.UTF8, "application/json")
    };
     var response = await httpClient.SendAsync(request);
     string apiResponse = await response.Content.ReadAsStringAsync();
     ViewBag.Result = "Success";
     receivedEmployee = JsonConvert.DeserializeObject<Employee>(apiResponse);
     return View(receivedEmployee);
 }

相关内容

最新更新