Question

J'appelle une bibliothèque tierce qui prend System.Web.HttpResponse. Je vois que j'ai un HttpResponseBase, mais pas HttpResponse comme dans les formulaires Web.

Y at-il un moyen d'obtenir le HttpResponse? En utilisant MVC 3.

[Modifier] : Je suis en train de le faire dans une méthode du contrôleur. Aussi enveloppe corrigé.

Était-ce utile?

La solution

Si vous avez besoin d'interagir avec les systèmes qui prennent les types non-mockable, vous pouvez obtenir l'accès au courant HttpContext via la propriété statique System.Web.HttpContext.Current . Le HttpResponse est simplement suspendu à de là via la propriété de réponse.

Autres conseils

En application mvc vous pouvez utiliser HttpContext.ApplicationInstance.Response.This m'a aidé pour obtenir le HttpResponse dans MVC application.

Non, mais votre HttpResponseBase est probablement un HttpResponseWrapper qui contient une HttpResponse à l'intérieur de celui-ci. Toutes les méthodes de HttpResponse sont accessibles depuis la HttpResponseBase.

Si vous souhaitez accéder à la HttpResponse, alors vous pouvez ajouter une référence dans HttpContext.Items dans votre IHttpHandler ou quelque part plus tôt dans le cycle de vie ASP.NET. L'événement BeginRequest serait un bon point de le faire.

Vos références HttpContext.Items le même dictionnaire que les références de HttpContextBase.Items, vous aurez accès à tous ces éléments dans MVC3

Pour clarifier,

Il est un HttpResponseWrapper, mais il n'y a pas accesseur public pour le HttpResponse. Donc, il n'y a pas une référence directement accessible. Pour faire une référence directement accessible avant que le cadre décide de commencer à vous donner l'emballage au lieu de la référence sous-jacente, créer un gestionnaire d'événements pour l'événement HttpApplication.BeginRequest. Votre gestionnaire aura une référence à l'objet HttpContext. Set HttpContext.Items["HttpRequest"] = HttpContext.Request. Ensuite, dans votre contrôleur, vous pourrez accéder à la référence HttpRequest par RequestContext.HttpContext.Items["HttpRequest"].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top