2013-04-29 30 views
13

Tôi đang chuyển đổi ứng dụng web ASP.NET sang dự án MVC Web Api. Một trong các phương pháp của tôi mong đợi là HttpRequest lớp học. Tuy nhiên, bộ điều khiển Web Api chỉ chứa đối tượng HttpRequestMessage (this.Request). Bạn có biết cách tôi có thể chuyển đổi HttpRequestMessage thành HttpRequest không?Chuyển đổi HttpRequestMessage thành HttpRequest

Trả lời

22

Bạn có thể không cần phải chuyển đổi từ HttpRequestMessage. Có một cách khác:

var context = new HttpContextWrapper(HttpContext.Current); 
HttpRequestBase request = context.Request; 
+2

System.Web.HttpContext.Current.Request – sobelito

+1

Điều này có vẻ khủng khiếp như lừa dối tôi nhưng tôi buộc phải làm điều đó nếu tôi muốn viết các hàm có thể được gọi từ bộ điều khiển ASP.NET Web API cũng như bộ điều khiển ASP.NET MVC. Đối với cuộc sống của tôi, tôi không hiểu bởi API web không thể chỉ được xây dựng trên đầu trang của MVC (vì vậy ApiController có thể là một lớp con của một bộ điều khiển MVC bình thường). Thay vào đó, nếu bạn muốn sử dụng MVC và API cùng nhau, bạn phải điều hướng giữa hai thế giới song song nhưng không tương thích với cùng các khái niệm trong mỗi khái niệm. – Andy

0

Hãy thử sử dụng/tạo HttpRequestWrapper bằng cách sử dụng HttpRequestBase của bạn.

+0

Làm cách nào để nhận 'HttpRequestBase'? tôi có nên tạo một bản thân mình không? (tức là tạo đối tượng mới và sao chép các tham số 'HttpRequestMessage' vào nó) – Avisho

Các vấn đề liên quan