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.

¿Fue útil?

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"].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top