.ashx에서 HttpContext라는 단어는 무엇을 의미하나요? 이 이야기를 해보죠
HttpContext 클래스: 개별 HTTP 요청에 관한 모든 HTTP 특화 정보를 캡슐화합니다.
처리 요청 실행 체인의 각 단계마다 각 객체 간에 오가는 객체가 있으며, 즉 요청의 컨텍스트 정보가 저장되는 HttpContext 객체입니다. HttpContext는 처리해야 할 단일 요청 ASP.NET 모든 정보를 캡슐화합니다. 요청 처리 메커니즘이 설정되면, HttpContext 클래스는 HttpRuntime 객체로 인스턴스화되며, 이 객체는 요청 수명의 여러 단계를 거칩니다
HttpContext 소개: 단일 사용자, 단일 요청에 대한 데이터를 유지하며, 그 요청 기간 동안만 데이터를 유지합니다. 서로 다른 HttpModules와 HttpHandler 간에 전달해야 하는 값을 유지하기 위해 제공됩니다. 또한 완전한 요청을 위한 적절한 정보를 유지하는 데도 사용할 수 있습니다.
Current 속성은 현재 요청된 HttpContex 객체를 반환하는 유용한 정적 멤버입니다. 항목은 요청을 처리하는 모듈과 핸들러들 간에 데이터를 공유하는 해시 테이블입니다. 각 커스텀 모듈이나 핸들러는 요청된 HttpContext 객체에 자체 정보를 추가할 수 있으며, Items에 저장된 정보는 결국 페이지에서 사용하지만, 이 정보는 요청 실행 중에만 접근할 수 있습니다 HttpContext 정의: 개별 HTTP 요청에 관한 모든 HTTP 고유 정보를 캡슐화합니다.
사실, Http 요청과 반환된 모든 정보가 그 안에 포함되어 있습니다.
HttpContext는 System.Runtime.Remoting.Messaging.CallContext.HostContext에서 유래했습니다. 이 HostContext 정의는 현재 스레드와 연관된 호스트 컨텍스트를 얻거나 설정하는 것입니다(따라서 HttpContext는 현재 요청의 스레드에서만 사용할 수 있습니다). )
HttpContext는 실제로 CallContext.HostContext 속성에 저장됩니다호스트컨텍스트에 대해 아직도 궁금하신다면 직접 Reflector.exe에서 확인하실 수 있습니다. 더 이상 코드를 올리고 싶지 않습니다. 일부 타입과 메서드는 공개되지 않기 때문입니다.
HttpContext.Current.Items는 HttpModule과 HTTPHandler 간 데이터 공유 시 사용할 수 있는데, 이는 모든 사용자 요청이 HTTP 런타임 파이프라인인 HttpModule, HTTPHandler를 거치기 때문입니다. IHttpMoudle 메서드를 구현해 HttpMoudle을 통해 사용자 요청에 정보를 전달할 때, HttpContext.Current.Items를 사용해 다양한 요청 페이지와 Http모듈에서 데이터를 전송할 수 있지만, 요청이 종료되고 데이터가 게시되면 이 컬렉션의 데이터는 스스로 사라집니다.
예를 들어, 요청을 할 때마다 ef에서 동일한 DbContext 컨텍스트 객체를 사용하고 싶어 하며, 코드는 다음과 같습니다:
|