Chuyển hướng từ hành động đăng api web asp.net


112

Tôi rất mới đối với API Web ASP.NET 4.0. Chúng tôi có thể chuyển hướng đến một URL khác ở cuối hành động ĐĂNG không ?, đại loại như ...Response.Redirect(url)

Trên thực tế, tôi tải tệp lên từ ứng dụng MVC (giả sử www.abcmvc.com) thông qua API Web (nói www.abcwebapi.com/upload)

Đây uploadlà hành động ĐĂNG. Tôi đăng biểu mẫu gồm nhiều phần lên hành động đăng của trình điều khiển tải lên Web API. 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?

Câu trả lời:


206

Chắc chắn rồi:

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
Sử dụng kỹ thuật Chuyển hướng này đã giải quyết được trang WebAPI "đối tượng được chuyển đến" mà tôi đang nhận được với các kỹ thuật chuyển hướng khác. Cũng cho Redirect 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

@Darin Dimitrov, điều này hiệu quả. 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

26

Đây là một cách khác bạn có thể truy cập vào thư mục gốc của trang web của mình mà không cần 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ỉ hoạt động nếu cả trang web MVC và WebApi của bạn đều nằm trên cùng một URL


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

5

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. Tiếp tục chỉnh sửa không có ích lợi gì, người đánh giá sẽ từ chối từng chỉnh sửa.
Kaspar Lee
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.