Domanda

sto chiamando una libreria di terze parti che prende un System.Web.HttpResponse. Vedo che ho un HttpResponseBase, ma non HttpResponse come in moduli web.

C'è un modo per ottenere il HttpResponse? Utilizzando MVC 3.

[Edit] : Sto cercando di fare questo in un metodo di controllo. Inoltre corretto alloggiamento.

È stato utile?

Soluzione

Se avete bisogno di interagire con i sistemi che tengono i tipi non-mockable, si può ottenere l'accesso alla corrente HttpContext tramite la proprietà statica System.Web.HttpContext.Current . Il HttpResponse è appena appeso fuori di lì tramite la proprietà di risposta.

Altri suggerimenti

In applicazione MVC è possibile utilizzare HttpContext.ApplicationInstance.Response.This mi ha aiutato per ottenere il HttpResponse in MVC applicazione.

No, ma il vostro HttpResponseBase è probabilmente un HttpResponseWrapper che contiene un HttpResponse all'interno di esso. Tutti i metodi HttpResponse sono accessibili dalla HttpResponseBase.

Se si vuole accedere al HttpResponse, allora si potrebbe aggiungere un riferimento ad esso in HttpContext.Items nel vostro IHttpHandler o da qualche parte in precedenza nel ciclo di vita ASP.NET. L'evento BeginRequest sarebbe un buon punto per fare questo.

I tuoi HttpContext.Items riferimenti lo stesso dizionario che i riferimenti HttpContextBase.Items, in modo da avere accesso a tutti gli elementi in MVC3

Per chiarire,

Si tratta di una HttpResponseWrapper, ma non c'è di accesso pubblico per la HttpResponse. Quindi, non v'è un riferimento direttamente accessibili. Per fare un riferimento accessibile direttamente davanti al quadro decide di iniziare dandovi l'involucro al posto del riferimento sottostante, creare un gestore di eventi per l'evento HttpApplication.BeginRequest. Il tuo gestore avrà un riferimento all'oggetto HttpContext. Set HttpContext.Items["HttpRequest"] = HttpContext.Request. Poi, nel vostro controller si sarà in grado di accedere al riferimento HttpRequest da RequestContext.HttpContext.Items["HttpRequest"].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top