2012-07-04 74 views
87

我對ASP.NET 4.0 Web API非常陌生。我們可以重定向到另一個網址在POST操作?像結束...... Response.Redirect(url)重定向從asp.net web api發佈操作

其實我從一個MVC應用程序上傳文件(比如www.abcmvc.com)通過Web API(比如www.abcwebapi.com/upload

這裏upload是POST操作。我將多部分表單發佈到Web API上傳控制器的發佈操作。上傳後,我想重新回到www.abcmvc.com

這可能嗎?

回答

164

肯定的:

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; 
} 
+7

使用這種重定向技術,解決了「對象移至」的WebAPI頁我與其他重定向技術得到。也可以使用'HttpStatusCode.Redirect'(302)或'.RedirectMethod'(303) – AaronLS

+0

@Darin Dimitrov作爲臨時重定向而不是永久重定向。爲什麼當我使用HttpStatusCode.Redirect代替時,我的客戶端收到401響應? – Brett

24

這裏是另一種方式,你可以讓您的網站的根目錄中沒有硬編碼的網址:

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

注: 將僅在兩臺你的MVC工作網站和WebApi在相同的URL上

0

您可以選擇此項

[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請停止建議相同的編輯。如果你願意,在一個單獨的答案中發佈你改變的代碼。繼續進行編輯沒有意義,審閱者會將每個編輯轉向。 – Druzion

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