이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 17081|회답: 2

[ASP.NET] HttpContext.Current.Items

[링크 복사]
게시됨 2018. 2. 11. 오전 10:42:10 | | | |

HTTP는 상태 없는 프로토콜입니다. 각 요청은 독립적이며, 그 실행과 결과는 이전 요청과 이후 요청과 직접적으로 관련이 없으며, 이전 요청에 대한 응답이나 후속 요청에 대한 응답에 직접적인 영향을 받지 않습니다.

실제로 우리 시스템은 사용자가 클라이언트 브라우저와 서버 간에 동일한 데이터(상태)를 여러 번 요청할 수 있도록 지원하며, 예를 들어 사용자의 로그인 계정 정보 등이 있습니다. 따라서 ASP.NET 상태 관리를 위한 많은 변수를 제공합니다: 애플리케이션 상태, 세션 상태, 뷰 상태 등.

HttpContext 객체는 단일 HTTP 요청에만 사용됩니다.이 클래스의 속성에는 요청 객체, 응답 객체, 세션 객체 등이 포함됩니다. 이것은 HttpContext 클래스의 Items 컬렉션으로, 키값 형태의 해시 테이블 객체를 포함하고 있습니다.

먼저, 단일 사용자 요청(단일 HTTPRequest에 유효한 HttpContext.Current.Items)에만 작동하는 HttpContext.Current.Items의 목적을 살펴보겠습니다. 이 요청이 완료되면, 서버 정보가 브라우저로 전송될 때 아이템 수집이 사라집니다. 세션 객체는 사용자의 세션용으로, 여러 사용자 요청에 대응하여 세션이 만료되면 정보가 사라집니다.

HttpContext.Current.Items의 수명 주기가 매우 짧은데, 어떤 상황에서 사용할 수 있나요? 여기서 언급된 점은, 모든 사용자 요청이 HTTP 런타임라인 HttpModule, HTTPHandler를 거쳐 이루어지기 때문에, HttpModule과 HTTPHandler 간 데이터 공유 시 HttpContext.Current.Items를 사용할 수 있음을 언급합니다. IHttpMoudle 메서드를 구현해 HttpMoudle을 통해 사용자 요청에 정보를 전달할 때, HttpContext.Current.Items를 사용해 다양한 요청 페이지와 Http모듈에서 데이터를 전송할 수 있지만, 요청이 종료되고 데이터가 게시되면 이 컬렉션의 데이터는 스스로 사라집니다. 아래 그림에서 볼 수 있듯이:




또한, 서버 페이지가 이동할 때(Server.Execute/Server.Transfer) HttpContext.Current.Items 사용해 두 폼 간에 데이터를 전달할 수 있습니다.
분명히 Server.Transfer를 Response.Redirect로 바꾸면, 새 페이지의 HttpContext.Current.Items 데이터를 받을 수 없습니다. 왜냐하면 다른 Http 요청이기 때문입니다. System.NullReferenceException: 객체 참조가 객체의 인스턴스로 설정되어 있지 않습니다.





이전의:이더리움 네트워크를 기반으로 한 가상화폐 발행까지 20분
다음:지능형 단말기의 사용 시나리오와 중요성에 대한 고민
 집주인| 게시됨 2023. 6. 30. 오후 8: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