¿Cómo puedo obtener una referencia a un httpResponse en ASP.NET MVC?
-
24-10-2019 - |
Pregunta
Estoy llamando a una biblioteca de terceros que toma una System.Web.HttpResponse
. Veo que tengo un HttpResponseBase
, pero no HttpResponse
como en formas web.
¿Hay alguna forma de obtener el HttpResponse
? Usando MVC 3
.
Editar : Estoy tratando de hacer esto en un método de controlador. También carcasa corregida.
Solución
Si necesita interactuar con los sistemas que toman los tipos no simulables, puede obtener acceso al HTTPContext actual a través de la propiedad estática System.web.httpcontext.current. El httpresponse está colgando de allí a través de la propiedad de respuesta.
Otros consejos
En la aplicación MVC puede usar HttpContext.ApplicationInstance.Response
. Esto me ayudó a obtener el HttpResponse
En la aplicación MVC.
No, pero tu HttpResponseBase
es probablemente un HttpResponseWrapper
que contiene un HttpResponse
dentro de eso. Todos HttpResponse
se pueden acceder a los métodos desde el HttpResponseBase
.
Si quieres acceso al HttpResponse
, entonces podrías agregar una referencia en HttpContext.Items
en tus IHttpHandler
o en algún lugar anterior en el ciclo de vida ASP.NET. El evento BeginRequest sería un buen punto para hacer esto.
Su HttpContext.Items
Referencias el mismo diccionario que HttpContextBase.Items
Referencias, por lo que tendrá acceso a todos esos elementos en MVC3
Para aclarar,
Es un HttpResponseWrapper
, pero no hay accesor público para el HttpResponse
. Por lo tanto, no hay una referencia accesible directamente. Para hacer una referencia directamente accesible antes de que el marco decida comenzar a darle el envoltorio en lugar de la referencia subyacente, cree un controlador de eventos para HttpApplication.BeginRequest
evento. Su manejador tendrá una referencia al HttpContext
objeto. Establecer HttpContext.Items["HttpRequest"] = HttpContext.Request
. Luego, en su controlador, podrá acceder al HttpRequest
referencia por RequestContext.HttpContext.Items["HttpRequest"]
.