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.