Asp.net web api post eyleminden yönlendirme


112

ASP.NET 4.0 Web API konusunda çok yeniyim. POST işleminin sonunda başka bir URL'ye yönlendirebilir miyiz ?, gibi bir şey ...Response.Redirect(url)

Aslında bir MVC uygulamasından (örneğin www.abcmvc.com) Web API (diyelim www.abcwebapi.com/upload) aracılığıyla dosya yüklüyorum

İşte uploadPOST işlemi. Web API yükleme denetleyicisinin post eylemine çok parçalı bir form gönderiyorum. Yükledikten sonra sayfasına yeniden yönlendirmek istiyorum www.abcmvc.com.

Mümkün mü?

Yanıtlar:


206

Elbette:

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
Bu Yönlendirme tekniğini kullanmak, diğer yönlendirme teknikleriyle aldığım "nesne taşınan" WebAPI sayfasını çözdü. Ayrıca kalıcı yerine geçici yeniden yönlendirme için HttpStatusCode.Redirect(302) veya .RedirectMethod(303) kullanabilirsiniz
AaronLS

@Darin Dimitrov, bu işe yarıyor. Neden bunun yerine HttpStatusCode.Redirect kullandığımda istemcim bir 401 yanıtı alıyor?
Brett

26

URL'yi zor kodlamadan web sitenizin kök dizinine ulaşmanın başka bir yolu:

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

Not: Yalnızca MVC web siteniz ve WebApi aynı URL'deyse çalışır.


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

5

Bunu kontrol edebilirsin

[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 Lütfen aynı düzenlemeyi önermeyi bırakın. İsterseniz, değiştirdiğiniz kodu ayrı bir cevapla gönderin. Düzenlemeye devam etmenin bir anlamı yoktur, gözden geçirenler her düzenlemeyi aşağı çevirecektir.
Kaspar Lee
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.