HTTP ir bezvalstniecības protokols. Katrs pieprasījums ir neatkarīgs, un tā izpilde un rezultāti nav tieši saistīti ar iepriekšējo pieprasījumu un nākamo pieprasījumu, un atbilde uz iepriekšējo pieprasījumu to tieši neietekmēs, kā arī tieši neietekmēs atbildi uz nākamo pieprasījumu.
Faktiski mūsu sistēma bieži atbalsta lietotājus, lai kopīgotu vienus un tos pašus datus (stāvokli) starp klienta pārlūkprogrammu un serveri vairākus pieprasījumus, piemēram, lietotāja pieteikšanās konta informāciju. Tāpēc ASP.NET nodrošina daudzus mainīgos, lai pārvaldītu stāvokli: lietojumprogrammas stāvokli, sesijas stāvokli, skata stāvokli utt.
HttpContext objekts ir paredzēts tikai vienam http pieprasījumam.Šīs klases rekvizīti ietver arī pieprasījuma objektus, atbildes objektus, sesijas objektus utt. Šī ir HttpContext klases vienumu kolekcija, kas satur jaukšanas tabulas objektu atslēgas vērtības formā.
Pirmkārt, apskatīsim HttpContext.Current.Items mērķi, kas darbojas tikai pēc viena lietotāja pieprasījuma (HttpContext.Current.Items derīgs vienam HTTPRequest). Kad šis pieprasījums ir pabeigts, vienumu kolekcija tiks zaudēta, kad servera informācija tiks nosūtīta atpakaļ uz pārlūkprogrammu. Sesijas objekts ir paredzēts lietotāja sesijai, tas ir, tas darbojas pēc vairākiem lietotāju pieprasījumiem, un informācija tiek zaudēta pēc sesijas beigām.
Tā kā HttpContext.Current.Items ir tik īss dzīves cikls, kādos apstākļos to var izmantot? Šeit ir atzīmēts, ka HttpContext.Current.Items var izmantot, koplietojot datus starp HttpModule un HTTPHandler, jo katrs lietotāja pieprasījums iet caur HTTP izpildlaika cauruļvadu HttpModule, HTTPHandler. Ieviešot IHttpMoudle metodi, lai nodotu informāciju lietotāja pieprasījumam, izmantojot HttpMoudle. Varat izmantot HttpContext.Current.Items, lai pārsūtītu datus dažādās pieprasījumu lapās un dažādos HttpModules, bet, kad pieprasījums ir beidzies un dati ir publicēti, dati šajā kolekcijā tiks zaudēti paši. Kā parādīts nākamajā attēlā:
Turklāt, kad servera lapa lec (Server.Execute/Server.Transfer), mēs varam izmantot HttpContext.Current.Items, lai nodotu datus starp abām veidlapām.
Acīmredzot, ja maināt Server.Transfer uz Response.Redirect, jaunajā lapā nevarēsit iegūt datus HttpContext.Current.Items, jo tas ir cits Http pieprasījums. System.NullReferenceException: objekta atsauce nav iestatīta objekta instancei.
|