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.