I\'m calling a third-party library that takes a System.Web.HttpResponse
. I see I have a HttpResponseBase
, but not HttpResponse
like in web
No, but your HttpResponseBase
is probably an HttpResponseWrapper
which contains an HttpResponse
inside of it. All the HttpResponse
methods are accessible from the HttpResponseBase
.
If you want access to the HttpResponse
, then you could add a reference to it in HttpContext.Items
in your IHttpHandler
or somewhere earlier in the ASP.NET lifecycle. The BeginRequest event would be a good point to do this.
Your HttpContext.Items
references the same dictionary that HttpContextBase.Items
references, so you will have access to all those items in MVC3
It is an HttpResponseWrapper
, but there is no public accessor for the HttpResponse
. So, there is not a directly accessible reference. To make a directly accessible reference before the framework decides to start giving you the wrapper instead of the underlying reference, create an event handler for HttpApplication.BeginRequest
event. Your handler will have a reference to the HttpContext
object. Set HttpContext.Items["HttpRequest"] = HttpContext.Request
. Then in your controller you will be able to access the HttpRequest
reference by RequestContext.HttpContext.Items["HttpRequest"]
.