2013-04-29 17 views
13

Konwertuję aplikację internetową ASP.NET do projektu MVC Web Api. Jedna z moich metod oczekuje klasy HttpRequest. Jednak kontroler Web Api przechowuje tylko obiekt HttpRequestMessage (this.Request). Czy wiesz, jak przekonwertować HttpRequestMessage na HttpRequest?Konwertuj HttpRequestMessage na HttpRequest

Odpowiedz

22

Prawdopodobnie nie trzeba konwertować z HttpRequestMessage. Istnieje inny sposób:

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

System.Web.HttpContext.Current.Request – sobelito

+1

To wydaje się strasznie jak oszustwo, ale jestem zmuszony to zrobić, jeśli chcę pisać funkcje, które można nazwać z kontrolerów ASP.NET Web API, a także kontrolerów MVC ASP.NET. Dla mojego życia nie rozumiem, że web API nie może być zbudowany na bazie MVC (więc ApiController może być podklasą normalnego kontrolera MVC). Zamiast tego, jeśli chcesz używać MVC i API, musisz nawigować pomiędzy dwoma równoległymi, ale niekompatybilnymi światami, z tymi samymi pojęciami w każdym. – Andy

0

Spróbuj użyć/utworzyć HttpRequestWrapper przy użyciu HttpRequestBase.

+0

Jak uzyskać "HttpRequestBase"? powinienem sam je stworzyć? (tj. utwórz nowy obiekt i skopiuj do niego parametry "HttpRequestMessage") – Avisho