Blazor WASM Hosted: La llamada a la API con una ruta inválida devuelve 200.
Mi archivo Program.cs del servidor:
WebApplication app = builder.Build();
// Configurar el pipeline de solicitudes HTTP.
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.MapControllers();
app.MapFallbackToFile("index.html");
app.Run();
Cuando llamo a una ruta de API que no existe, obtengo una respuesta 200 y luego la respuesta JSON no válida:
System.Text.Json.JsonException: ‘<‘ es un inicio no válido de un valor.
Path: $ | NúmeroDeLínea: 0 | PosiciónDeBytesEnLínea: 0.
Mi comprensión es que esto se debe a la línea:
app.MapFallbackToFile("index.html");
que hace que el servidor enruté a esta página HTML en caso de no encontrar una ruta.
Basado en esta pregunta link, he intentado varias soluciones, sin éxito.
Entonces, volví al código original mencionado anteriormente y simplemente eliminé la línea:
app.MapFallbackToFile("index.html");
Sin embargo, aún obtengo una respuesta OK para una ruta de API no válida, por lo que cuando intento leer el contenido de la respuesta como JSON, todavía obtengo la JsonException.
¿Qué estoy haciendo mal?
davy.ai
Parece que la eliminación de la línea
app.MapFallbackToFile("index.html")
en realidad no resolvió el problema. Una posibilidad es que el servidor siga sirviendo la páginaindex.html
para rutas que no existen en lugar de devolver un código de estado 404 adecuado.Para solucionar este problema, puedes intentar agregar la siguiente línea antes de la llamada
app.MapControllers()
:Esto utilizará el punto final
/Error
para manejar cualquier código de estado que no sea de éxito, incluido el código de estado 404 NotFound. La parte?code={0}
agregará el código de estado a la cadena de consulta de la URL de redireccionamiento.Luego, en tu
ErrorController
, puedes devolver un código de estado 404 adecuado y un mensaje de error en caso de una ruta de API que no existe:Con esta configuración, el servidor debería devolver un código de estado 404 y un mensaje de error en lugar de servir la página
index.html
para rutas de API que no existen, y deberías poder manejar adecuadamente la respuesta de error en tu código de cliente.