Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 17081|Отговор: 2

[ASP.NET] HttpContext.Current.Items

[Копирай линк]
Публикувано в 11.02.2018 г. 10:42:10 ч. | | | |

HTTP е протокол без състояние. Всяка заявка е независима и изпълнението и резултатите ѝ не са пряко свързани с предишната заявка и последвалата, и няма да бъдат пряко засегнати от отговора на предишната заявка, нито ще повлияят пряко на отговора на следващата заявка.

Всъщност нашата система често позволява на потребителите да споделят едни и същи данни (състояние) между браузъра на клиента и сървъра при множество заявки, като например информацията за акаунта за вход на потребителя. Затова ASP.NET предоставя много променливи за управление на състоянието: състояние на приложение, състояние на сесия, състояние на изглед и др.

Обектът HttpContext е само за една HTTP заявка.Свойствата на този клас включват също обекти Request, Response обекти, Session обекти и др. Това е колекцията Items на класа HttpContext, която съдържа обект с хеш таблица под формата на key-value.

Първо, нека разгледаме целта на HttpContext.Current.Items, който работи само при една потребителска заявка (HttpContext.Current.Items, валиден за един HTTPRequest). Когато тази заявка бъде завършена, колекцията от елементи ще бъде загубена, когато информацията от сървъра бъде изпратена обратно към браузъра. Обектът Session е за сесията на потребителя, тоест действа върху множество заявки от потребители, а информацията се губи след изтичането на сесията.

Тъй като HttpContext.Current.Items има толкова кратък жизнен цикъл, при какви обстоятелства може да се използва? Тук е отбелязано, че HttpContext.Current.Items може да се използва при споделяне на данни между HttpModule и HTTPHandler, тъй като всяка потребителска заявка преминава през HTTP runtime pipeline HttpModule, HTTPHandler. Когато имплементирате метода IHttpMoudle за предаване на информация към потребителската заявка чрез HttpMoudle. Можете да използвате HttpContext.Current.Items, за да прехвърляте данни в различни страници за заявки и различни HttpModules, но след като заявката приключи и данните бъдат публикувани, данните в тази колекция ще бъдат изгубени сами. Както е показано на следващата фигура:




Освен това, когато страницата на сървъра скача (Server.Execute/Server.Transfer), можем да използваме HttpContext.Current.Items, за да предаваме данни между двете форми.
Очевидно, ако промените Server.Transfer на Response.Redirect, няма да можете да получите данните в HttpContext.Current.Items на новата страница, защото това е различна Http заявка. System.NullReferenceException: Обектната референция не е зададена на инстанцията на обекта.





Предишен:20 минути до издаване на виртуална валута, базирана на мрежата Ethereum
Следващ:Мислене за сценариите на използване и значението на интелигентните терминали
 Хазяин| Публикувано в 30.06.2023 г. 20:35:38 ч. |
ASP.NET разликата между ThreadStatic, CallContext и HttpContext
https://www.itsvse.com/thread-10620-1-1.html
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com