es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Blazor del lado del servidor y navegando al controlador: Lo siento, no hay nada en esta dirección.

Estoy intentando implementar un controlador en mi aplicación de servidor Blazor, pero me he encontrado con un problema interesante que no puedo manejar ni encontrar la respuesta:

La situación es la siguiente.

Primero agregué el mapeo del controlador en mi startup.cs:

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); <– esto

endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");

});

Luego vinculé la navegación a ese controlador:


@code{
private void DownloadFile()
{
NavigationManager.NavigateTo($”Game/Games”, true);
}
}

y finalmente agregué un controlador simple a mi aplicación Blazor:

[ApiController]
[Route(“[controller]/[action]”)]
public class GameController : Controller
{
[HttpGet, ActionName(“Games”)]
public async Task Get()
{
await Task.Delay(1000);
return Ok(“Test”);
}

Como se puede ver, funciona como método get, y en esta forma funciona. Pero cuando cambio esto a HttpPost

[HttpPost, ActionName(“Games”)]

Estoy obteniendo

Lo siento, no hay nada en esta dirección.

Creé un proyecto Blazor limpio con la opción .NET alojada (hay una llamada meteorológica allí utilizando una API) y cuando cambio get a post, obtengo el mismo resultado.

¿Esto significa que Blazor no admite POST?
¿Qué me falta o estoy haciendo mal?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No es cierto que Blazor no admita POST. El problema aquí podría ser que el método que realiza la solicitud no esté configurado para utilizar un método POST.

    Intente cambiar el método DownloadFile para utilizar el método POST de HTTP:

    private async Task DownloadFile()
    {
        var httpClient = new HttpClient();
        var response = await httpClient.PostAsync("Game/Games", null);
        var content = await response.Content.ReadAsStringAsync();
    }
    

    De esta manera, se usará el método POST al hacer la solicitud al controlador de juegos.

    Asegúrese también de que el atributo de ruta en el controlador esté configurado correctamente y de que no haya errores tipográficos o nombres mal escritos.

Comments are closed.