Redirecionar de asp.net web api post action


112

Sou muito novo na API da Web do ASP.NET 4.0. Podemos redirecionar para outro URL no final da ação POST ?, algo como ...Response.Redirect(url)

Na verdade, eu carrego o arquivo de um aplicativo MVC (digamos www.abcmvc.com) por meio da API da Web (digamos www.abcwebapi.com/upload)

Aqui uploadestá a ação POST. Publico um formulário com várias partes na ação de postagem do controlador de upload da API da Web. Depois de enviar, gostaria de redirecionar de volta para www.abcmvc.com.

Isso é possível?

Respostas:


206

Certo:

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
Usar essa técnica de Redirecionamento resolveu o "objeto movido para" página WebAPI que estava obtendo com outras técnicas de redirecionamento. Também para redirecionamento temporário em vez de permanente, você pode usar HttpStatusCode.Redirect(302) ou .RedirectMethod(303)
AaronLS

@Darin Dimitrov, isso funciona. Por que, quando uso HttpStatusCode.Redirect, meu cliente recebe uma resposta 401?
Brett

26

Esta é outra maneira de chegar à raiz do seu site sem codificar o url:

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

Nota: Só funcionará se o seu site MVC e WebApi estiverem no mesmo URL


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

5

Você pode verificar isso

[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, pare de sugerir a mesma edição. Se quiser, poste o código que você alterou em uma resposta separada. Não adianta continuar a editar, os revisores irão recusar cada edição.
Kaspar Lee
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.