Co znamená slovo HttpContext v .ashx? Pojďme si o tom s tebou promluvit
Třída HttpContext: Zapouzdřuje všechny informace specifické pro HTTP o jednotlivých HTTP požadavcích.
V každé fázi řetězce vykonávání požadavků zpracování existuje objekt, který mezi jednotlivými objekty prochází, tedy kontextová informace požadavku jsou uloženy, což je objekt HttpContext. HttpContext obsahuje všechny informace ASP.NET jediném požadavku k zpracování. Když je mechanismus zpracování požadavků zaveden, třída HttpContext je instancována objektem HttpRuntime, který pak prochází různými fázemi životnosti požadavku
Úvod do HttpContextu: Udržujte data pro jednoho uživatele, jeden požadavek, a data jsou udržována pouze po dobu trvání tohoto požadavku. je poskytováno k udržení hodnot, které je třeba předávat mezi různými HttpModules a HttpHandlery. Lze jej také použít k uchovávání vhodných informací pro kompletní žádost.
Vlastnost Current je užitečný statický člen, který vrací aktuálně požadovaný objekt HttpContex. Položky jsou hashovací tabulky, které sdílejí data mezi moduly a handlery zapojenými do zpracování požadavků. Každý vlastní modul nebo handler může přidat své vlastní informace do požadovaného objektu HttpContext a informace uložené v položkách jsou nakonec stránkou využity, ale k těmto informacím lze přistupovat pouze během vykonávání požadavku HttpContext Definice: Zapouzdřuje všechny HTTP-specifické informace o jednotlivých HTTP požadavcích.
Ve skutečnosti jsou v něm i požadavek na HTTP a všechny vrácené informace.
HttpContext pochází ze System.Runtime.Remoting.Messaging.CallContext.HostContext. Tato definice HostContext slouží k získání nebo nastavení host contextu spojeného s aktuálním vláknem (takže HttpContext lze použít pouze ve vlákně aktuálního požadavku. )
HttpContext je ve skutečnosti uložen ve vlastnosti CallContext.HostContextPokud vás HostContext stále zajímá, můžete si ho sami prohlédnout na Reflector.exe, nechci už zveřejňovat další kód, protože některé typy a metody nejsou veřejné.
HttpContext.Current.Items lze použít při sdílení dat mezi HttpModule a HTTPHandler, protože každý uživatelský požadavek prochází HTTP runtime pipeline HttpModule, HTTPHandler. Když implementujete metodu IHttpMoudle pro předání informací uživateli, požádáte o HttpMoudle. Můžete použít HttpContext.Current.Items k přenosu dat na různých stránkách požadavků a různých HttpModulech, ale jakmile požadavek skončí a data jsou odeslána, data v této kolekci se sama ztratí.
Například pokaždé, když zadáme požadavek, chceme použít stejný kontextový objekt DbContext v ef a kód je následující:
|