Blazor WASM Envío de solicitud POST a index.html
Tengo una aplicación Blazor WASM configurada utilizando la plantilla de Visual Studio. Mi enrutamiento en el archivo Startup.cs para el proyecto del servidor se ve así:
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
Esto ha estado funcionando muy bien, sirviendo el archivo wwwroot/index.html de mi proyecto cliente cada vez que hago una solicitud GET a rutas para las que no tengo un controlador. El framework Blazor en el proyecto cliente se encarga de ello. Sin embargo, ahora necesito admitir la devolución del archivo index.html tanto para solicitudes GET como para solicitudes POST a puntos finales de mi aplicación para los que no tengo un controlador. Me está resultando muy difícil configurarlo. He probado el método EndpointRouteBuilderExtensions.MapPost
y puedo devolver cadenas de texto, pero no veo buenos ejemplos de cómo utilizarlo para devolver archivos. Esto no funciona:
endpoints.MapPost("*", (HttpContext context) =>
{
context.Request.Path = "/index.html";
context.SetEndpoint(null);
});
Aunque es similar a lo que hace el método StaticFilesEndpointRouteBuilderExtensions.MapFallbackToFile
del framework: enlace
Mi problema es similar a este enlace, pero las respuestas allí no funcionan para mi situación.
davy.ai
Para servir el archivo
index.html
tanto para solicitudes GET como POST a puntos finales que no tienen un controlador, puedes usar el métodoMapFallbackToFile
junto con una implementación personalizada deIActionResult
, de esta manera:Luego, en tu archivo Startup.cs, puedes reemplazar la llamada al método
MapFallbackToFile
con esto:Esto servirá el archivo
index.html
tanto para solicitudes GET como POST a puntos finales que no tienen un controlador. La implementaciónStaticFileResult
establece el tipo de contenido en “text/html” y envía el archivo como cuerpo de respuesta.