Mostrando entradas con la etiqueta HttpClient. Mostrar todas las entradas
Mostrando entradas con la etiqueta HttpClient. Mostrar todas las entradas

miércoles, 5 de enero de 2022

Mayúsculas, Minúsculas y "Exception: '<' is an invalid start of a value" en ReadFromJsonAsync (Blazor)

 Sintomas

La operación de conversión JSON a Objeto 

_datos = await q.Content.ReadFromJsonAsync<EdiProyecto.Edicion>()

Provoca el error 

"Exception: '<' is an invalid start of a value"

Por experiencia supones que está recibiendo Html en lugar de JSON, revisas la petición

var q = await Http.GetAsync($"API/Proyectos/{Id}");

Escribes en el navegador  loalhost:23234API/proyectos/ 22 y recibes JSON

¿Qué pasa?

Causa y Solución

El nombre de controlador en la URL de WEBAPI debe estar en minúsculas.

var q = await Http.GetAsync($"API/proyectos/{Id}");


martes, 30 de noviembre de 2021

Error al usar await q.Content.ReadFromJsonAsync

 Sintomas:

En Blazor WASM  se produce un error  

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]       Unhandled exception rendering component: Each parameter in the deserialization constructor on type 'CRM.Shared.Models.Notas.FilaTabla' must bind to an object property or field on deserialization. Each parameter name must match with a property or field on the object. The match can be case-insensitive.

Al convertir la respuesta de JSON a un objeto C# mediante q.Content.ReadFromJsonAsync .

Lo que te sorprende es que la clase esta definida en el proyecto Shared usado tanto por el proyecto Server del controlador Web API que envia la respuesta como por la parte del cliente donde se realiza la llamada a Content.ReadFromJsonAsync. Entonces, ¿por qué difieren los nombres?

Solución:

La clase no tiene un constructor vacio.

Observaciones

Es fácil olvidarse del constructor vacío cuando creas un construtor con parametro un entidad de EF.