Reindirizza da asp.net web api post action


112

Sono molto nuovo nell'API Web ASP.NET 4.0. Possiamo reindirizzare a un altro URL alla fine dell'azione POST ?, qualcosa di simile ...Response.Redirect(url)

In realtà carico il file da un'applicazione MVC (ad esempio www.abcmvc.com) tramite API Web (ad esempio www.abcwebapi.com/upload)

Ecco uploadl'azione POST. Inserisco un modulo in più parti nell'azione di pubblicazione del controller di caricamento dell'API Web. Dopo il caricamento vorrei reindirizzare di nuovo a www.abcmvc.com.

È possibile?

Risposte:


206

Sicuro:

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
L'utilizzo di questa tecnica di reindirizzamento ha risolto la pagina WebAPI "spostata dell'oggetto" che stavo ottenendo con altre tecniche di reindirizzamento. Anche per Reindirizzamento temporaneo anziché permanente puoi usare HttpStatusCode.Redirect(302) o .RedirectMethod(303)
AaronLS

@Darin Dimitrov, funziona. Perché quando utilizzo invece HttpStatusCode.Redirect, il mio client riceve una risposta 401?
Brett

26

Ecco un altro modo per accedere alla radice del tuo sito Web senza codificare l'URL:

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

Nota: funzionerà solo se il tuo sito Web MVC e WebApi si trovano sullo stesso URL


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

5

Puoi controllare questo

[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 Smetti di suggerire la stessa modifica. Se lo desideri, inserisci il codice che hai modificato in una risposta separata. Non ha senso continuare a modificare, i revisori rifiuteranno ogni modifica.
Kaspar Lee
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.