Weiterleiten von asp.net Web-API-Post-Aktion


112

Ich bin sehr neu in der ASP.NET 4.0-Web-API. Können wir am Ende der POST-Aktion zu einer anderen URL umleiten?Response.Redirect(url)

Eigentlich lade ich eine Datei von einer MVC-Anwendung (sagen wir www.abcmvc.com) über die Web-API (sagen wir www.abcwebapi.com/upload) hoch.

Hier uploadist die POST-Aktion. Ich poste ein mehrteiliges Formular in der Post-Aktion des Web-API-Upload-Controllers. Nach dem Hochladen möchte ich zurück zu www.abcmvc.com.

Ist das möglich?

Antworten:


206

Sicher:

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
Mit dieser Umleitungstechnik wurde die WebAPI-Seite "Objekt verschoben auf" gelöst, die ich mit anderen Umleitungstechniken erhielt. Auch für temporäre statt permanente Weiterleitung können Sie HttpStatusCode.Redirect(302) oder .RedirectMethod(303) verwenden
AaronLS

@Darin Dimitrov, das funktioniert. Warum erhält mein Client eine 401-Antwort, wenn ich stattdessen HttpStatusCode.Redirect verwende?
Brett

26

Hier ist eine andere Möglichkeit, wie Sie zum Stammverzeichnis Ihrer Website gelangen können, ohne die URL fest zu codieren:

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

Hinweis: Funktioniert nur, wenn sich sowohl Ihre MVC-Website als auch WebApi unter derselben URL befinden


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

5

Sie können dies überprüfen

[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 Bitte hör auf, die gleiche Bearbeitung vorzuschlagen. Wenn Sie möchten, geben Sie den geänderten Code in einer separaten Antwort ein. Es macht keinen Sinn, die Bearbeitung fortzusetzen. Die Prüfer lehnen jede Bearbeitung ab.
Kaspar Lee
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.