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?

Shahdat
fonte

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

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