Przekierowanie z akcji postu api sieci web asp.net


112

Jestem bardzo nowy w ASP.NET 4.0 Web API. Czy możemy przekierować do innego adresu URL na końcu akcji POST?, Coś w rodzaju ...Response.Redirect(url)

Właściwie przesyłam plik z aplikacji MVC (powiedzmy www.abcmvc.com) przez Web API (powiedzmy www.abcwebapi.com/upload)

Oto uploadakcja POST. Wysyłam wieloczęściowy formularz do akcji post kontrolera przesyłania Web API. Po przesłaniu chciałbym przekierować z powrotem do www.abcmvc.com.

czy to możliwe?

Odpowiedzi:


206

Pewnie:

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
Użycie tej techniki przekierowania rozwiązało problem przeniesienia obiektu na stronę WebAPI, który otrzymywałem z innymi technikami przekierowania. Również w przypadku przekierowania tymczasowego zamiast stałego możesz użyć HttpStatusCode.Redirect(302) lub .RedirectMethod(303)
AaronLS

@Darin Dimitrov, to działa. Dlaczego jest tak, że gdy zamiast tego używam HttpStatusCode.Redirect, mój klient otrzymuje odpowiedź 401?
Brett

26

Oto inny sposób na dostanie się do katalogu głównego witryny bez twardego kodowania adresu URL:

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

Uwaga: będzie działać tylko wtedy, gdy zarówno witryna MVC, jak i WebApi znajdują się pod tym samym adresem URL


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

5

Możesz to sprawdzić

[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 Proszę przestać sugerować tę samą zmianę. Jeśli chcesz, prześlij zmieniony kod w osobnej odpowiedzi. Nie ma sensu kontynuować edycji, recenzenci odrzucą każdą edycję.
Kaspar Lee
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.