从HttpContext.Items集合引用ASP.NET Web控件的可行性?

从HttpContext.Items集合引用ASP.NET Web控件的可行性?,asp.net,httprequest,page-lifecycle,asp.net-webcontrol,Asp.net,Httprequest,Page Lifecycle,Asp.net Webcontrol,MSDN描述为用于: 在HTTP请求期间,在IHttpModule接口和IHttpHandler接口之间组织和共享数据 MSDN不建议在此集合中存储对页面控件的引用。我知道Items集合在页面生命周期之外,因为它与请求关联 我之所以询问在Items集合中存储控件引用的可能性,是因为我们正在考虑制作一些页面控件,这些控件使用某个(已知)接口在加载时向页面注册。这是因为最终用户通过内容管理系统配置控件时,控件在页面中的位置可能会发生变化-这就是页面的组装方式。我们希望避免递归页面控件层次结构,而是让

MSDN描述为用于:

在HTTP请求期间,在IHttpModule接口和IHttpHandler接口之间组织和共享数据

MSDN不建议在此集合中存储对页面控件的引用。我知道Items集合在页面生命周期之外,因为它与请求关联

我之所以询问在Items集合中存储控件引用的可能性,是因为我们正在考虑制作一些页面控件,这些控件使用某个(已知)接口在加载时向页面注册。这是因为最终用户通过内容管理系统配置控件时,控件在页面中的位置可能会发生变化-这就是页面的组装方式。我们希望避免递归页面控件层次结构,而是让控件通过注册直接提供自己


最好的情况是,有人出于一个很好的理由否决了这个想法,因为他们想到了一个我们没有或有更好的想法来实现同样的事情

ASP.NET页面也是通过
IHttpHandler
接口实现的HTTP处理程序,因此是MSDN文档中定义的
HttpContext.Items
集合的有效候选

由于页面控件有效地位于处理程序中,因此从Items集合引用页面控件似乎没有明显的风险

我主要关心的是页面上下文中控件对象的生存期,而不是集合相关的请求/上下文的更长生存期。但是,当页面完成时,控件仍将通过IDisposable正确处置,当控件最终从Items集合中释放时,垃圾收集器仍将清理控件,而Items集合应该在页面处理程序过期后不久释放