none
¿Como redireccionar a una URL desde controlador WebApi? RRS feed

  • Pregunta

  • Hola ...

    Tengo una aplicacion Asp.Net Mvc  a la que agregue un controlador WebApi , y en el tengo un metodo en el que debo redireccionar a una URL a los clientes .

    Esto se puede hacer ...de que forma ?


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    martes, 9 de julio de 2019 9:15

Todas las respuestas

  • No. No se puede hacer.

    Lo de "redireccionar" solo se aplica en el caso de que un navegador esté pidiendo una URL al servidor para presentarla en pantalla. En ese caso, el servidor devuelve un status 30x y el navegador sabe interpretar eso en el sentido de que tiene que navegar a otra pagina (devuelta en la respuesta despues del 30x).

    Pero el WebApi normalmente no se usa asi. El navegador no "navega" al WebApi. En su lugar, se usa algun codigo cliente que envia peticiones al WebApi y recibe las respuestas y las procesa por su cuenta. Desde luego, podrias devolverle un 30x al programa llamante, pero sera ese programa el que tendra que analizar la respuesta y en consonancia navegar a donde sea menester. No puedes desencadenar esa navegacion directamente desde el WebApi.

    martes, 9 de julio de 2019 11:59
  • Hola ..

    En realidad nesecito al finalizar el metodo, que el navegador me lleve a una URL ..Como lo hago ??


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    martes, 9 de julio de 2019 12:10
  • Asi me funciono

            [HttpGet]
            [AllowAnonymous]
            public IHttpActionResult TestActivate(string email, string date, string status)
            {
                Uri uri = new Uri("http://localhost:49799/");
                date = date.Replace("*", " ");
                EngineProyect Funcion = new EngineProyect();
                email = Funcion.DecodeBase64(email);
                DateTime FechaRegistroPrueba = Convert.ToDateTime(date);
                Cliente client = new Cliente()
                {
                    Email = email,
                    FechaActivacionPrueba = DateTime.UtcNow,
                    EstatusEnvioNotificacion = true,
    
                };
    
                return Redirect(uri);
            }


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    martes, 9 de julio de 2019 12:33
  • hola

    >>nesecito al finalizar el metodo, que el navegador me lleve a una URL

    Desde un webapi no se redirecciona

    No es asp.net mvc que devuelves un view con el render de html para poder redirecionar, la webpai retorna json o xml son solo datos

    para redirecionar lo realizas desde el cliente, no se si usas algun framework como ser Angular o React, sino lo haces puede usar solo javascript

        window.locarion.href= 'url';

    asi redirecionas desde el cliente cuando recibes la respuesta de la invocacion de la webapi

    Si usas alguna otra libreria como ser AngularJs redirecionas usando el routing de esta

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 9 de julio de 2019 13:36
  • hola

    >>Asi me funciono

    Pero esa no es una webapi, evalua nuevamente que estas desarrollando porque creo que mezclas conceptos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 9 de julio de 2019 13:38
  • Pero esa no es una webapi, evalua nuevamente que estas desarrollando porque creo que mezclas conceptos...

    Es un controlador WebApi  dentro de una Aplicacion Asp.Net MVC


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    martes, 9 de julio de 2019 18:05
  • Es un controlador WebApi  dentro de una Aplicacion Asp.Net MVC

    Da igual. No es una WebApi. Fíjate que devuelve un IHttpActionResult, y que hace un return Redirect(...). Con esas características no puede ser un WebApi, ni siquiera aunque originalmente cuando añadiste el controlador le dijeses que añadiese un WebApi.

    Tal como lo tienes solo funcionará si el navegador lo llama directamente en una navegación. No funcionará si lo llama un código AJAX o un cliente de otro tipo, tal como llamarían a un WebApi, porque el return Redirect precisamente hace lo que yo te decía en la primera respuesta (devolver un 30x). Así que solo sirve si se hace una llamada de navegación y no si se hace una llamada WebApi.

    martes, 9 de julio de 2019 18:42
  • Hola Alberto Poblacion

    Ejecuto ese metodo llamandolo desde un link que se adjunta en el cuerpo de un correo

    electronico


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    martes, 9 de julio de 2019 18:45
  • Ejecuto ese metodo llamandolo desde un link que se adjunta en el cuerpo de un correo

    Entonces razón de más para concluir que no es un WebApi. Desde un Link en un correo nunca se llama a un WebApi, siempre se llama a una Url que permita navegación, como es el caso de tu método, que devuelve un ActionResult. De haber conocido este dato desde un principio, en lugar de decir que era un WebApi, habría sido muy sencillo contestarte que pusieras un return Redirect al final del método de acción. No es una crítica, lo digo como sugerencia para facilitar las respuestas en el futuro. Con solo haber puesto en la pregunta el pedacito de código con tu método, como hiciste al final, habríamos visto inmediatamente de qué se trataba y habría sido mucho más fácil darle respuesta.
    martes, 9 de julio de 2019 21:04
  • hola

    >>Es un controlador WebApi  dentro de una Aplicacion Asp.Net MVC

    esto es una webapi

    Get Started with ASP.NET Web API 2 (C#)

    si tu codigo se parece a lo que alli se explica entonces si es una webapi, sino simplemente es un controller normal que retorna una view

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 10 de julio de 2019 0:07