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?

Shahdat
fuente

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;
}
Darin Dimitrov
fuente
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

sttaq
fuente
6
    [HttpGet]
    public RedirectResult Get()
    {
        return RedirectPermanent("https://www.google.com");
    }
Jigar Mistri
fuente
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);
}
Debendra Dash
fuente
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