2012-07-04 8 views
87

Jestem bardzo nowy w ASP.NET 4.0 Web API. Możemy przekierować do innego adresu URL na końcu działania POST ?, coś podobnego ... Response.Redirect(url)Przekierowanie z ap.net strony asp.net poczta akcja

Właściwie mogę przesłać plik z aplikacji MVC (słownie www.abcmvc.com) za pośrednictwem sieci Web API (słownie www.abcwebapi.com/upload)

Tutaj upload jest akcją POST. Publikuję wieloczęściowy formularz do akcji postu kontrolera przesyłania interfejsu API. Po przesłaniu chcę przekierować z powrotem do www.abcmvc.com.

Czy to możliwe?

Odpowiedz

164

Sure:

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; 
} 
+7

Stosując tę ​​technikę Przekierowanie rozwiązany „obiekt przeniesiony na stronę” WebAPI ja dostawałem z innymi technikami przekierować. Również w przypadku Przekierowania tymczasowego zamiast stałego można użyć 'HttpStatusCode.Redirect' (302) lub' .RedirectMethod' (303) – AaronLS

+0

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

24

Oto kolejny sposób można dostać się do korzeni swojej stronie bez ciężkiej kodowania 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 oba swojej MVC strona internetowa i WebApi są na tym samym adresie URL:

0

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 Przestań sugerować tę samą edycję. Jeśli chcesz, opublikuj zmieniony kod w osobnej odpowiedzi. Nie ma sensu kontynuować edycji, recenzenci skasują każdą edycję. – Druzion

3
[HttpGet] 
    public RedirectResult Get() 
    { 
     return RedirectPermanent("https://www.google.com"); 
    } 
Powiązane problemy