Wie kann ich einen Verweis auf eine HTTPResponse in ASP.NET MVC erhalten?
-
24-10-2019 - |
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.
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.Response
Das 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"]
.