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?

Shahdat
quelle

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

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