I'm converting ASP.NET web application to MVC Web Api project.
One of my methods expects HttpRequest
class. However, Web Api controller holds only HttpRequestMessage
(this.Request
) object.
Do you know how I can convert HttpRequestMessage
to HttpRequest
?
Asked
Active
Viewed 2.7k times
22
2 Answers
27
You probably don't need to convert from HttpRequestMessage. There is another way:
var context = new HttpContextWrapper(HttpContext.Current);
HttpRequestBase request = context.Request;

Boris Lipschitz
- 9,236
- 5
- 53
- 63
-
4System.Web.HttpContext.Current.Request – sobelito Feb 25 '14 at 20:32
-
3This seems awfully like cheating to me but I'm forced to do it if I want to write functions that can be called from ASP.NET Web API controllers as well as ASP.NET MVC controllers. For the life of me I don't understand by web API couldn't just be built on top of MVC (so ApiController could be a subclass of a normal MVC Controller). Instead if you want to use MVC and API together you have to navigate between two parallel but incompatible worlds with the same concepts in each. – Andy Jul 07 '16 at 16:01
-
2I've seen on the comments under [another answer](https://stackoverflow.com/questions/9565889/get-the-ip-address-of-the-remote-host#10998580) that you shouldn't use System.Web.HttpContext.Current in Web API projects - you can instead use `(HttpContextWrapper)Request.Properties["MS_HttpContext"]` – OutstandingBill Jun 13 '18 at 11:53
-1
Try to use/create a HttpRequestWrapper using your HttpRequestBase.

Real Programmer
- 331
- 2
- 13
-
How do I get an 'HttpRequestBase'? should I create one myself? (i.e. create new object and copy 'HttpRequestMessage' parameters to it) – Avi L Apr 30 '13 at 10:41
-
1you can get HttpRequestBase using `((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request` – M. Jahedbozorgan Feb 08 '19 at 16:22