I have been able to call my api with Create, Get, GetAll, and Delete. But I am having troubles with only Update. I thought it would be the same as Create but It seems not. I tried with HttpPut and HttpPost but nether called my API method.
My API is a separate project than my UI. I am eventually going to be using a GateWay making it into a microservice. Currently I call my client.SendAsync(httpRequest); and it does not reach my API method at all, It does not call the API but all the other CRUD methods call it and works perfectly. I get a 400 bad request and 404 not found.
// Here is my MVC View Controller that calls the API.
public async Task<IActionResult> UpdateAppUser(string guid)
{
AppUser user = new AppUser();
HttpRequestMessage httprequest = new HttpRequestMessage(HttpMethod.Post, $"https://localhost:5001/api/account/GetUserByID/{guid}");
// httprequest.Content = new StringContent(guid);
var client = apiClient.CreateClient();
var response = await client.SendAsync(httprequest);
if (response.IsSuccessStatusCode)
{
var responseString = await response.Content.ReadAsStringAsync();
user = JsonConvert.DeserializeObject<AppUser>(responseString);
// return View("AppUser", user);
}/**/
return View(user);
}
//[Bind("FirstName,LastName,Email")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> UpdateAppUser(AppUser user)
{
if (ModelState.IsValid)
{
RegisterModel registerModel = new RegisterModel
{
Username = user.userName,
FirstName = user.firstName,
LastName = user.lastName,
DateCreated = user.dateCreated,
};
//var model = JsonConvert.SerializeObject(user);
var model = JsonConvert.SerializeObject(registerModel);
HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Post, $"https://localhost:5001/api/account/UpdateUser/");
httpRequest.Content = new StringContent(model, Encoding.UTF8, "application/json");
var client = apiClient.CreateClient();
var response = await client.SendAsync(httpRequest);
if (response.IsSuccessStatusCode)
{
return View("AppUserIndex");
}
}
return View(user);
}
// Here is the API
[HttpPost("UpdateUser")]
//[Route("UpdateUser")]
public async Task<IActionResult> UpdateUser(RegisterModel registerModel)
{
if (ModelState.IsValid)
{
var user = await userManager.FindByEmailAsync(registerModel.Email);
if (user != null)
{
user.Email = registerModel.Email;
user.UserName = registerModel.Username;
user.FirstName = registerModel.FirstName;
user.LastName = registerModel.LastName;
IdentityResult validEmail = null;
if (!string.IsNullOrEmpty(registerModel.Email))
{
// validEmail = await
}
IdentityResult identityResult = await userManager.UpdateAsync(user);
if (identityResult.Succeeded)
{
return Ok();
}
}
else
return NotFound();
}
return BadRequest();
}
I tried with HttpPut and HttpPost but nether called my API method.
Make sure the port is correct and it can find the action correctly.
HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Post, $"https://localhost:44306/account/UpdateUser/");
I tested these code without the 'gateway' and they works well, so the problem may lies on it, you should check whether your gateway can work well
ExceedingLife
I get a 400 bad request and 404 not found.
Could you please tell us about their scenes?
400 bad request often caused by the bad request, means the request can not access the action.
404 error often means can not find the url.
You can set break point to check whether you have these mistakes.
Best Regards,
Jerry Cai
.NET forums are moving to a new home on Microsoft Q&A, we encourage you to go to Microsoft Q&A for .NET for posting new questions and get involved today.
When I use PostMan or Swagger my Update API call works and updates the data.
Making sure I have the correct port and uri it gets 'BadRequest 400'
I am currently not using a gateway I am using a MVC UI to call my API Project. Everything works Except Update.
Looking at this some more, I am thinking it could be something with the page possibly itself..
I switched my form from UpdateUser to CreateUser and it calls the CreateUser action then when I call my httprequest for CreateUser it gets 'BadRequest 400' but when I do create User on my Create page it works with the 200 success.
I found the issue!!!
It looks like you CaNNOT convert object types.
I was inserting AppUser in the view. and the API method took RegisterUser.
In the mvc method i would convert appuser to registeruser and pass it in.
Member
30 Points
227 Posts
.net core mvc update call API with httpclientfactory
Dec 27, 2020 03:35 PM|ExceedingLife|LINK
Hello all
I have been able to call my api with Create, Get, GetAll, and Delete. But I am having troubles with only Update. I thought it would be the same as Create but It seems not. I tried with HttpPut and HttpPost but nether called my API method.
My API is a separate project than my UI. I am eventually going to be using a GateWay making it into a microservice.
Currently I call my client.SendAsync(httpRequest);
and it does not reach my API method at all, It does not call the API but all the other CRUD methods call it and works perfectly.
I get a 400 bad request and 404 not found.
Member
730 Points
246 Posts
Re: .net core mvc update call API with httpclientfactory
Dec 28, 2020 09:33 AM|Jerry Cai|LINK
Hi,ExceedingLife
HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Post, $"https://localhost:44306/account/UpdateUser/");
Could you please tell us about their scenes?
You can set break point to check whether you have these mistakes.
Best Regards,
Jerry Cai
Member
30 Points
227 Posts
Re: .net core mvc update call API with httpclientfactory
Dec 28, 2020 08:57 PM|ExceedingLife|LINK
When I use PostMan or Swagger my Update API call works and updates the data.
Making sure I have the correct port and uri it gets 'BadRequest 400'
I am currently not using a gateway I am using a MVC UI to call my API Project. Everything works Except Update.
Looking at this some more, I am thinking it could be something with the page possibly itself..
I switched my form from UpdateUser to CreateUser and it calls the CreateUser action then when I call my httprequest for CreateUser it gets 'BadRequest 400' but when I do create User on my Create page it works with the 200 success.
I found the issue!!!
It looks like you CaNNOT convert object types.
I was inserting AppUser in the view. and the API method took RegisterUser.
In the mvc method i would convert appuser to registeruser and pass it in.
that was my bad request.