Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

119
Views
Solicitud incorrecta al usar PostAsJsonAsync C#

Estoy tratando de publicar un modelo en mi MongoDB, pero el comando de publicación de mi aplicación Blazor ni siquiera llega al método de publicación de mi API en el controlador. He visto algunos temas sobre esto y también traté de depurar este problema durante horas.

Estoy tratando de publicar un modelo realmente simple.

 public string MomentCategoryName { get; set; }

El clic del botón activa este método. (Codifiqué un nombre de categoría para este).

 public async Task PostAsync(MomentCategoryModel momentCategory) { using (HttpResponseMessage response = await _api.ApiClient.PostAsJsonAsync("api/MomentCategory/Create", momentCategory)) { if (!response.IsSuccessStatusCode) { throw new Exception(); } } }

El baseuri y el cliente se inicializan en otra clase, pero todo el uri se verá así: https://localhost:7141/api/MomentCategory/Create

PostMomentCategory en MomentCategoryController obtiene un MomentCategoryModel de otra biblioteca:

 [BsonId] [BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)] public string Id { get; set; } public string MomentCategoryName { get; set; }

Y luego, en este código debería ejecutarse, pero el compilador nunca llega a esto, nunca se ejecuta:

 [HttpPost] [Route("Create")] public void PostMomentCategory(MomentCategoryModel model) { _momentCategoryData.CreateMomentCategory(model); }

Debido a eso, recibo una solicitud incorrecta. Pero cuando hago una solicitud GET que es casi la misma, se ejecuta correctamente. Ejemplo:

 public async Task<List<MomentCategoryModel>> GetAllAsync() { using (HttpResponseMessage response = await _api.ApiClient.GetAsync("api/MomentCategory/GetAll")) { if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync<List<MomentCategoryModel>>(); return result; } else { throw new Exception(); } } }

¡Gracias por su ayuda y su tiempo de antemano!

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Para la publicación json necesitas una opción frombody

 public void PostMomentCategory([FromBody] MomentCategoryModel model)
over 4 years ago · Santiago Trujillo Report

0

Puede probar el método PostAsync para POST su Model a su punto final API. Puedes hacerlo:

 public async Task PostAsync(MomentCategoryModel momentCategory) { string jsonData = JsonConvert.SerializeObject(momentCategory); StringContent content = new StringContent(jsonData, Encoding.UTF8, "application/json"); using (HttpResponseMessage response = await _api.ApiClient.PostAsync("api/MomentCategory/Create", content)) { if (!response.IsSuccessStatusCode) { throw new Exception(); } } }

Y en su método API, debe agregar el atributo [FromBody] para obtener los datos publicados:

 public void PostMomentCategory([FromBody]MomentCategoryModel model)
over 4 years ago · Santiago Trujillo Report

0

En MomentCategoryController el método Post de la siguiente manera:

 [HttpPost] [Route("Create")] [Consumes("application/x-www-form-urlencoded")] public void PostMomentCategory([FromForm] TestMCategoryModel model) { _momentCategoryData.CreateMomentCategory(model); }

En el método public async Task PostAsync(MomentCategoryModel momentCategory) agregué una lista de KeyValuePair con un elemento. Y también agregó un HttpContent como este: HttpContent httpcontet = new FormUrlEncodedContent();

De esta manera funciona, obtengo un código OK (código de estado 200). Tal vez funcionaría con el contenido de cadena sugerido si ajusto lo que debería consumir la API. También haré una prueba con eso, pero ahora mismo funciona de esta manera.

Me gustaría agradecer a todos los que se tomaron el tiempo de leer el problema y sugerir una posible solución.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!