Redirection à partir de l'action de publication de l'API Web asp.net


112

Je suis très nouveau dans l'API Web ASP.NET 4.0. Pouvons-nous rediriger vers une autre URL à la fin de l'action POST ?, quelque chose comme ...Response.Redirect(url)

En fait, je télécharge un fichier depuis une application MVC (disons www.abcmvc.com) via l'API Web (disons www.abcwebapi.com/upload)

Voici uploadl'action POST. Je poste un formulaire en plusieurs parties dans l'action de publication du contrôleur de téléchargement de l'API Web. Après le téléchargement, je souhaite rediriger vers www.abcmvc.com.

Est-ce possible?

Réponses:


206

Sûr:

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'utilisation de cette technique de redirection a résolu le "objet déplacé vers" la page WebAPI que j'obtenais avec d'autres techniques de redirection. Aussi pour Rediriger temporaire au lieu de permanent, vous pouvez utiliser HttpStatusCode.Redirect(302) ou .RedirectMethod(303)
AaronLS

@Darin Dimitrov, cela fonctionne. Pourquoi est-ce que lorsque j'utilise HttpStatusCode.Redirect à la place, mon client reçoit une réponse 401?
Brett

26

Voici une autre façon d'accéder à la racine de votre site Web sans coder en dur l'URL:

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

Remarque: ne fonctionnera que si votre site Web MVC et WebApi sont sur la même URL


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

5

Vous pouvez vérifier ceci

[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 Veuillez arrêter de suggérer la même modification. Si vous le souhaitez, publiez le code que vous avez modifié dans une réponse distincte. Il est inutile de continuer à modifier, les réviseurs rejetteront chaque modification.
Kaspar Lee
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.