Reputation: 99
Please suggest me. I initial project with Dotnet FrameworkCore6. Create project with Hosted and Individual. I try to use HTTPClient.Get it's work but i use HTTPClient.Put,Post,Delete,Patch i got Error 400. How can i fix it. Now i having 2 project get the same problem.
In blazor page
public async Task OnSubmit(AppFolder args)
{
args.IsDelete = false;
args.FolderColor = "";
args.CreatorId = "";
var httpClient = _factory.CreateClient("public");
var result = await httpClient.PostAsJsonAsync("WeatherForecast",args);
Console.WriteLine("OnSubmit Debug : "+result);
}
In WeatherController
[HttpPost]
public async Task<ActionResult> PostSomethings(AppFolder args)
{
Console.WriteLine("Post Debug"+args);
return await Task.Run(() => Ok());
}
I has bypass authen Program.cs
builder.Services.AddHttpClient("public", client => client.BaseAddress = new
Uri(builder.HostEnvironment.BaseAddress));
I got this Error Message
OnSubmit Debug : StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content:
System.Net.Http.BrowserHttpHandler+BrowserHttpContent, Headers:
{
Date: Sat, 18 Jun 2022 11:58:57 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Content-Type: application/problem+json; charset=utf-8
}
Upvotes: 3
Views: 8083
Reputation: 121
BadRequest also happens when you are passing not filled [Required] fields of model to controller post method
Upvotes: 0
Reputation: 21
Note: Reference types will need to be made nullable if it is possible for it to be null. This needs to be done even if the field has [JsonIgnore] This took me 3 days to find out... hope it helps you!
Upvotes: 1
Reputation: 99
Thank you for all recommend. I has fixed this problem. I have any property null
I think virtual
type will be not effect with model then in not mind it.But it's the problem.
this is my issue.
public class AppFolder
{
[Key]
public int Id { get; set; }
public string FoldName { get; set; }
public string FolderColor { get; set; }
public virtual ICollection<AppFile> AppFiles { get; set; }
public bool IsDelete { get; set; }
public string CreatorId { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime UpdatedDate { get; set; }
}
And i fixed it by allow null for AppFiles.
public class AppFolder
{
[Key]
public int Id { get; set; }
public string FoldName { get; set; }
public string FolderColor { get; set; }
public virtual ICollection<AppFile>? AppFiles { get; set; }
public bool IsDelete { get; set; }
public string CreatorId { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime UpdatedDate { get; set; }
}
Upvotes: 0
Reputation: 273244
Best guess:
AppFolder has a required string Name
property and you leave it null
.
This can easily happen when nullable reference types is ON.
Upvotes: 3
Reputation: 1454
If you want to use [POST], [PUT] and [DELETE] you need to decorate your controllers with those attributes [HttpPost] [HttpPut] [HttpDelete]
Upvotes: 0