Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

262
Vistas
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 Respuestas
Responde la pregunta

0

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

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

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda