Čo znamená slovo HttpContext v .ashx? Poďme sa o tom porozprávať s tebou
Trieda HttpContext: Zapuzdrí všetky HTTP-špecifické informácie o jednotlivých HTTP požiadavkách.
V každej fáze reťazca spracovávania požiadaviek existuje objekt, ktorý prechádza medzi jednotlivými objektmi, teda kontextová informácia požiadavky, ktorou je objekt HttpContext. HttpContext zahŕňa všetky informácie ASP.NET jednej požiadavke na spracovanie. Keď je mechanizmus spracovania požiadaviek zavedený, trieda HttpContext sa inštancionuje s objektom HttpRuntime, ktorý potom prechádza rôznymi fázami životnosti požiadavky
Úvod do HttpContext: Udržiavajte dáta pre jedného používateľa, jednu požiadavku, a údaje sa uchovávajú len počas trvania tejto požiadavky. je poskytovaný na udržiavanie hodnôt, ktoré je potrebné prenášať medzi rôznymi HttpModulmi a HttpHandlermi. Môže sa tiež použiť na uchovávanie vhodných informácií pre úplnú žiadosť.
Vlastnosť Current je užitočný statický člen, ktorý vracia aktuálne požadovaný objekt HttpContex. Položky sú hashovacie tabuľky, ktoré zdieľajú dáta medzi modulmi a handlermi zapojenými do spracovania požiadaviek. Každý vlastný modul alebo handler môže pridať vlastné informácie do požadovaného objektu HttpContext a informácie uložené v položkách sú nakoniec použité stránkou, ale tieto informácie sú dostupné len počas vykonávania požiadavky HttpContext Definícia: Zapuzdrí všetky HTTP-špecifické informácie o jednotlivých HTTP požiadavkách.
V skutočnosti je v ňom aj HTTP požiadavka a všetky vrátené informácie.
HttpContext pochádza zo System.Runtime.Remoting.Messaging.CallContext.HostContext. Táto definícia HostContext slúži na získanie alebo nastavenie hostiteľského kontextu spojeného s aktuálnym vláknom (takže HttpContext môže byť použitý iba vo vlákne aktuálnej požiadavky). )
HttpContext je v skutočnosti uložený vo vlastnosti CallContext.HostContextAk ťa HostContext stále zaujíma, môžeš si ho pozrieť na Reflector.exe, nechcem už viac zverejňovať kód, pretože niektoré typy a metódy nie sú verejné.
HttpContext.Current.Items je možné použiť pri zdieľaní dát medzi HttpModule a HTTPHandler, pretože každá používateľská požiadavka prechádza cez HTTP runtime pipeline HttpModule, HTTPHandler. Keď implementujete metódu IHttpMoudle na odovzdanie informácií používateľovi, požiadajte o to cez HttpMoudle. Môžete použiť HttpContext.Current.Items na prenos dát v rôznych stránkach požiadaviek a rôznych HttpModules, ale keď požiadavka skončí a dáta sú zverejnené, údaje v tejto kolekcii sa samy stratia.
Napríklad, zakaždým, keď zadáme požiadavku, chceme použiť ten istý kontextový objekt DbContext v ef a kód je nasledovný:
|