Alihkan dari tindakan posting api web asp.net


112

Saya sangat baru di ASP.NET 4.0 Web API. Bisakah kita mengalihkan ke URL lain di akhir tindakan POST ?, seperti ...Response.Redirect(url)

Sebenarnya saya mengunggah file dari aplikasi MVC (katakanlah www.abcmvc.com) melalui API Web (katakanlah www.abcwebapi.com/upload)

Berikut uploadtindakan POST. Saya memposting formulir multi-bagian ke tindakan posting pengontrol upload API Web. Setelah mengunggah saya ingin mengalihkan kembali ke www.abcmvc.com.

Apakah ini mungkin?

Jawaban:


206

Tentu:

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
Menggunakan teknik Pengalihan ini memecahkan "objek dipindahkan ke" halaman WebAPI yang saya dapatkan dengan teknik pengalihan lainnya. Juga untuk Redirect sementara alih-alih permanen Anda dapat menggunakan HttpStatusCode.Redirect(302) atau .RedirectMethod(303)
AaronLS

@Darin Dimitrov, ini berhasil. Mengapa ketika saya menggunakan HttpStatusCode.Redirect sebagai gantinya, klien saya menerima respons 401?
Brett

26

Berikut adalah cara lain untuk mendapatkan root situs Anda tanpa hard coding url:

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

Catatan: Hanya akan berfungsi jika situs MVC dan WebApi Anda berada di URL yang sama


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

5

Anda bisa memeriksanya

[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 Harap berhenti menyarankan pengeditan yang sama. Jika Anda mau, kirim kode yang Anda ubah dalam jawaban terpisah. Tidak ada gunanya melanjutkan pengeditan, peninjau akan menolak setiap pengeditan.
Kaspar Lee
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.