asp.net web api post actionからリダイレクト


112

ASP.NET 4.0 Web APIは初めてです。POSTアクションの最後に別のURLにリダイレクトできますか?Response.Redirect(url)

実際には、MVCアプリケーションから(たとえばwww.abcmvc.com)Web API(たとえばwww.abcwebapi.com/upload)を介してファイルをアップロードします

これuploadがPOSTアクションです。マルチパートフォームをWeb APIアップロードコントローラーの投稿アクションに投稿します。アップロードした後、にリダイレクトしたいと思いwww.abcmvc.comます。

これは可能ですか?

回答:


206

承知しました:

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
このリダイレクト手法を使用して、他のリダイレクト手法で取得していた「移動先のオブジェクト」WebAPIページを解決しました。また、パーマネントではなく一時的なリダイレクトの場合は、HttpStatusCode.Redirect(302)または.RedirectMethod(303)を使用できます
AaronLS 2014

@Darin Dimitrov、これは機能します。代わりにHttpStatusCode.Redirectを使用すると、クライアントが401応答を受信するのはなぜですか?
ブレット

26

URLをハードコーディングせずにWebサイトのルートにアクセスする別の方法を次に示します。

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

注: MVC WebサイトとWebApiの両方が同じURLにある場合にのみ機能します



5

これを確認できます

[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同じ編集の提案を停止してください。必要に応じて、変更したコードを別の回答で投稿してください。編集を続ける意味はありません。レビュー担当者は各編集を拒否します。
Kaspar Lee
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.