Vad betyder ordet HttpContext i .ashx? Låt oss prata om det med dig
HttpContext-klassen: Kapslar in all HTTP-specifik information om individuella HTTP-förfrågningar.
I varje steg i processkedjan för exekveringsbegäran finns ett objekt som passerar mellan varje objekt, det vill säga att kontextinformationen för begäran lagras, vilket är HttpContext-objektet. HttpContext kapslar in all information ASP.NET en enda förfrågan som ska behandlas. När processen för hantering av förfrågningar är etablerad instansieras HttpContext-klassen med ett HttpRuntime-objekt, som sedan går igenom olika steg i begärandets livstid
Introduktion till HttpContext: Underhåll data för en enskild användare, en enda förfrågan, och datan underhålls endast under hela den begäran. tillhandahålls för att underhålla de värden som behöver skickas mellan olika HttpModules och HttpHandlers. Den kan också användas för att behålla rätt information för en fullständig begäran.
Current-egenskapen är en användbar statisk medlem som returnerar det för närvarande begärda HttpContex-objektet. Objekt är hashtabeller som delar data mellan modulerna och hanterarna som är involverade i bearbetningen av förfrågningar. Varje anpassad modul eller hanterare kan lägga till sin egen information till det begärda HttpContext-objektet, och informationen som lagras i Items används så småningom av sidan, men denna information kan endast nås under körningen av förfrågan HttpContext Definition: Kapslar in all HTTP-specifik information om individuella HTTP-förfrågningar.
Faktum är att HTTP-förfrågan och all information som returneras finns i den.
HttpContext kommer från System.Runtime.Remoting.Messaging.CallContext.HostContext. Denna HostContext-definition är att hämta eller sätta värdkontexten som är associerad med den aktuella tråden (så HttpContext kan endast användas i tråden för den aktuella förfrågan). )
HttpContext lagras faktiskt i egenskapen CallContext.HostContext.Om du fortfarande är nyfiken på HostContext kan du se det själv med Reflector.exe, jag vill inte posta mer kod eftersom vissa typer och metoder inte är offentliga.
HttpContext.Current.Items kan användas vid datadelning mellan HttpModule och HTTPHandler, eftersom varje användarförfrågan går genom HTTP-runtime-pipelinen HttpModule, HTTPHandler. När du implementerar metoden IHttpMoudle för att skicka information till användarförfrågan via HttpMoudle. Du kan använda HttpContext.Current.Items för att överföra data på olika förfrågningssidor och olika HttpModules, men när förfrågan avslutas och datan publiceras förloras datan i denna samling av sig själv.
Till exempel, varje gång vi gör en förfrågan vill vi använda samma DbContext-kontextobjekt i ef, och koden är följande:
|