Redirigir desde asp.net web api post action


112

Soy muy nuevo en ASP.NET 4.0 Web API. ¿Podemos redirigir a otra URL al final de la acción POST ?, algo como ...Response.Redirect(url)

En realidad, subo el archivo desde una aplicación MVC (digamos www.abcmvc.com) a través de la API web (digamos www.abcwebapi.com/upload)

Aquí uploadestá la acción POST. Publico un formulario de varias partes en la acción de publicación del controlador de carga de la API web. Después de cargar, me gustaría redirigir a www.abcmvc.com.

es posible?

Respuestas:


206

Por supuesto:

public HttpResponseMessage Post()
{
    // ... do the job

    // now redirect
    var response = Request.CreateResponse(HttpStatusCode.Moved);
    response.Headers.Location = new Uri("http://www.abcmvc.com");
    return response;
}

9
El uso de esta técnica de redireccionamiento resolvió el "objeto movido a" página WebAPI que estaba obteniendo con otras técnicas de redireccionamiento. También para Redirigir temporal en lugar de permanente puede usar HttpStatusCode.Redirect(302) o .RedirectMethod(303)
AaronLS

@ Darin Dimitrov, esto funciona. ¿Por qué cuando utilizo HttpStatusCode.Redirect en su lugar, mi cliente recibe una respuesta 401?
Brett

26

Aquí hay otra forma en que puede llegar a la raíz de su sitio web sin codificar la URL:

var response = Request.CreateResponse(HttpStatusCode.Moved);
string fullyQualifiedUrl = Request.RequestUri.GetLeftPart(UriPartial.Authority);
response.Headers.Location = new Uri(fullyQualifiedUrl);

Nota: solo funcionará si tanto su sitio web MVC como WebApi están en la misma URL


6
    [HttpGet]
    public RedirectResult Get()
    {
        return RedirectPermanent("https://www.google.com");
    }

5

Puedes comprobar esto

[Route("Report/MyReport")]
public IHttpActionResult GetReport()
{

   string url = "https://localhost:44305/Templates/ReportPage.html";

   System.Uri uri = new System.Uri(url);

   return Redirect(uri);
}

1
@dotnetguy Por favor, deje de sugerir la misma edición. Si lo desea, publique el código que cambió en una respuesta separada. No tiene sentido seguir editando, los revisores rechazarán cada edición.
Kaspar Lee
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.