Hvad betyder ordet HttpContext i .ashx? Lad os tale om det med dig
HttpContext-klassen: Indkapsler al HTTP-specifik information om individuelle HTTP-forespørgsler.
I hvert trin af behandlingsanmodningens eksekveringskæde er der et objekt, der passerer mellem hvert objekt, det vil sige, at kontekstinformationen for anmodningen gemmes, hvilket er HttpContext-objektet. HttpContext indkapsler al information ASP.NET en enkelt anmodning, der skal behandles. Når anmodningshåndteringsmekanismen er etableret, instansieres HttpContext-klassen med et HttpRuntime-objekt, som derefter gennemgår forskellige faser af anmodningens levetid
Introduktion til HttpContext: Vedligehold data for en enkelt bruger, en enkelt anmodning, og dataene vedligeholdes kun i hele denne anmodning. er angivet for at vedligeholde de værdier, der skal sendes mellem forskellige HttpModules og HttpHandlers. Det kan også bruges til at opretholde de relevante oplysninger til en komplet anmodning.
Current-egenskaben er et nyttigt statisk medlem, der returnerer det aktuelt anmodede HttpContex-objekt. Elementer er hashtabeller, der deler data mellem modulerne og håndtererne, der er involveret i behandlingen af forespørgsler. Hver brugerdefineret modul eller handler kan tilføje sin egen information til det ønskede HttpContext-objekt, og informationen, der er gemt i Items, bruges til sidst af siden, men denne information kan kun tilgås under udførelsen af anmodningen HttpContext Definition: Indkapsler al HTTP-specifik information om individuelle HTTP-forespørgsler.
Faktisk er Http-anmodningen og alle de returnerede oplysninger i den.
HttpContext kommer fra System.Runtime.Remoting.Messaging.CallContext.HostContext. Denne HostContext-definition er at hente eller sætte den værtskontekst, der er tilknyttet den aktuelle tråd (så HttpContext kun kan bruges i tråden for den aktuelle anmodning). )
HttpContext gemmes faktisk i egenskaben CallContext.HostContextHvis du stadig er nysgerrig på HostContext, kan du selv se det med Reflector.exe, jeg vil ikke poste mere kode, fordi nogle typer og metoder ikke er offentlige.
HttpContext.Current.Items kan bruges ved deling af data mellem HttpModule og HTTPHandler, fordi hver brugeranmodning går gennem HTTP-runtime-pipelinen HttpModule, HTTPHandler. Når du implementerer IHttpMoudle-metoden til at sende information til brugerforespørgslen via HttpMoudle. Du kan bruge HttpContext.Current.Items til at overføre data på forskellige anmodningssider og forskellige HttpModules, men når anmodningen slutter og dataene er lagt op, vil dataene i denne samling gå tabt af sig selv.
For eksempel vil vi hver gang vi laver en anmodning, bruge det samme DbContext-kontekstobjekt i ef, og koden er som følger:
|