0

MSDN 将HttpContext.Items描述为用于:

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

MSDN 没有对在此集合中存储对 Page Controls 的引用提出任何建议。我知道 Items 集合比页面生命周期更长,因为它与请求相关联。

我询问是否可以在 Items 集合中存储 Control 引用的原因是因为我们正在考虑制作一些页面控件,这些控件具有某个(已知)界面,以便在加载时向页面注册自己。这是因为页面中控件的位置可能会随着最终用户通过内容管理系统进行配置而改变——这就是页面的组装方式。我们希望避免递归页面控件层次结构,而是让控件通过注册直接提供自己。

最好的情况是,有人出于充分的理由否决了这个想法,因为他们想到了一个我们没有的问题,或者有更好的想法来实现同样的目标。

4

1 回答 1

0

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

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

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

于 2013-07-05T03:59:04.100 回答