2013-07-03 4 views
0

MSDN은 HttpContext.Items가 사용되고 설명HttpContext.Items 컬렉션에서 ASP.NET 웹 컨트롤을 참조 할 수 있습니까?

IHttpModule 인터페이스 및 인터페이스 사이 IHttpHandler를 주 데이터가 HTTP 요청 중에 정리.

MSDN 페이지에 대한 참조를 저장하는이 컬렉션의 제어 에 대해 어떤 권고를하지 않습니다. Items 컬렉션은 요청과 관련되어 있기 때문에 페이지 수명주기보다 오래 걸린다는 것을 알고 있습니다.

내가 Items 컬렉션에 Control 참조를 저장할 가능성에 대해 묻는 이유는 특정 (알려진) 인터페이스가있는 페이지 컨트롤을로드 할 때 페이지에 등록하도록 고려하고 있기 때문입니다. 이는 컨텐츠 관리 시스템을 통해 최종 사용자가 구성 할 때 페이지의 컨트롤 위치가 변경 될 수 있기 때문입니다. 이것이 페이지 구성 방법입니다. 우리는 페이지 제어 계층 구조를 되풀이하지 않고 컨트롤을 등록을 통해 직접 제공하고자합니다.

가장 좋은 사례는 누군가가 우리가하지 않은 문제를 생각했거나 같은 것을 성취 할 수있는 더 좋은 아이디어를 갖고 있기 때문에 좋은 생각으로이 아이디어를 싹쓸이하는 것입니다.

답변

0

ASP.NET 페이지도 IHttpHandler 인터페이스 구현을 통한 HTTP 처리기이므로 MSDN 설명서의 정의에 따라 HttpContext.Items 컬렉션과 함께 사용할 수있는 유효한 후보입니다.

페이지 컨트롤은 실제로 처리기에 있으므로 항목 컬렉션에서 페이지 컨트롤을 참조 할 명백한 위험이없는 것으로 보입니다.

내 관심사는 페이지의 컨텍스트에서 컨트롤 개체의 수명 대 컬렉션이 관련된 요청/컨텍스트의 수명이 더 긴 것이 었습니다. 그러나 컨트롤은 IDisposable을 통해 페이지가 완료되고 가비지 수집기가 마지막으로 Items 컬렉션에서 해제 될 때 컨트롤을 여전히 정리합니다.이 컬렉션은 페이지 처리기가 만료 된 후에 오래 있어야합니다.