2012-07-04 4 views
87

Tôi rất mới vào ASP.NET 4.0 Web API. chúng ta có thể chuyển hướng đến một URL khác ở phần cuối của hành động POST ?, cái gì đó như ... Response.Redirect(url)Chuyển hướng từ trang web asp.net api post action

Thật sự tôi tải lên tập tin từ một ứng dụng MVC (nói www.abcmvc.com) thông qua Web API (nói www.abcwebapi.com/upload)

Đây upload là hành động POST. Tôi đăng một hình thức đa phần cho hành động đăng bài của bộ điều khiển tải lên API Web. Sau khi tải lên, tôi muốn chuyển hướng trở lại www.abcmvc.com.

Điều này có khả thi không?

Trả lời

164

chắc:

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

Sử dụng kỹ thuật Redirect này đã giải quyết được "đối tượng chuyển đến" trang WebAPI tôi đã nhận được với các kỹ thuật chuyển hướng khác. Ngoài ra để chuyển hướng tạm thời thay vì vĩnh viễn, bạn có thể sử dụng 'HttpStatusCode.Redirect' (302) hoặc' .RedirectMethod' (303) – AaronLS

+0

@Darin Dimitrov, công trình này. Tại sao khi tôi sử dụng HttpStatusCode.Redirect thay vào đó, khách hàng của tôi nhận được phản hồi 401? – Brett

24

Đây là một cách khác để bạn có thể nhận được vào thư mục gốc của trang web của bạn mà không cứng mã hóa url:

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

Lưu ý: sẽ chỉ làm việc nếu cả hai MVC của bạn trang web và WebApi nằm trên cùng một URL

0

Bạn có thể kiểm tra điều này

[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 Vui lòng ngừng đề xuất chỉnh sửa tương tự. Nếu bạn muốn, hãy đăng mã bạn đã thay đổi trong một câu trả lời riêng. Không có điểm tiếp tục chỉnh sửa, người đánh giá sẽ biến từng chỉnh sửa. – Druzion

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