Frage

Ich rufe eine Bibliothek von Drittanbietern an, die eine braucht System.Web.HttpResponse. Ich sehe, ich habe eine HttpResponseBase, aber nicht HttpResponse Wie in Webformen.

Gibt es eine Möglichkeit, das zu bekommen? HttpResponse? Verwendung MVC 3.

Bearbeiten : Ich versuche dies in einer Controller -Methode zu tun. Auch korrigiertes Gehäuse.

War es hilfreich?

Lösung

Wenn Sie mit Systemen interagieren müssen, die die nicht fertigen Typen einnehmen, erhalten Sie über die statische Eigenschaft Zugriff auf den aktuellen HTTPContext System.Web.httpcontext.current. Die HTTPesponse hängt nur über die Antworteigenschaft von dort ab.

Andere Tipps

In der MVC -Anwendung können Sie verwenden HttpContext.ApplicationInstance.ResponseDas hat mir geholfen, das zu bekommen HttpResponse In MVC -Anwendung.

Nein, aber deine HttpResponseBase ist wahrscheinlich ein HttpResponseWrapper das enthält an HttpResponse Innerhalb davon. All die HttpResponse Methoden sind aus dem zugänglich HttpResponseBase.

Wenn Sie Zugriff auf die HttpResponse, Dann könnten Sie einen Verweis darauf hinzufügen HttpContext.Items in deiner IHttpHandler oder irgendwo früher im ASP.NET -Lebenszyklus. Das BeginneRequest -Ereignis wäre ein guter Punkt, um dies zu tun.

Dein HttpContext.Items verweist auf das gleiche Wörterbuch wie HttpContextBase.Items Referenzen, sodass Sie Zugriff auf all diese Elemente in MVC3 haben

Um klarzustellen,

Es ist ein HttpResponseWrapper, aber es gibt keinen öffentlichen Accessor für die HttpResponse. Es gibt also keine direkt zugängliche Referenz. Erstellen Sie einen Ereignishandler HttpApplication.BeginRequest Veranstaltung. Ihr Handler wird einen Hinweis auf die HttpContext Objekt. Satz HttpContext.Items["HttpRequest"] = HttpContext.Request. Dann können Sie in Ihrem Controller auf die zugreifen HttpRequest Referenz von RequestContext.HttpContext.Items["HttpRequest"].

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top