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?

Shahdat
sumber

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;
}
Darin Dimitrov
sumber
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

sttaq
sumber
6
    [HttpGet]
    public RedirectResult Get()
    {
        return RedirectPermanent("https://www.google.com");
    }
Jigar Mistri
sumber
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);
}
Debendra Dash
sumber
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