0

MSDNでは、 HttpContext.Itemsは次の目的で使用されると説明しています。

HTTP 要求中に IHttpModule インターフェイスと IHttpHandler インターフェイスの間でデータを整理および共有します。

MSDN は、ページ コントロールへの参照をこのコレクションに格納することについて推奨していません。Items コレクションは要求に関連付けられているため、ページのライフサイクルよりも長く存続することがわかっています。

Control 参照を Items コレクションに格納する可能性について質問している理由は、特定の (既知の) インターフェイスを備えたいくつかのページ コントロールを作成して、Load 時にページに自分自身を登録することを検討しているためです。これは、ページ内のコントロールの位置が、コンテンツ管理システムを介してエンド ユーザーによって構成されるときに変更される可能性があるためです。これがページの組み立て方法です。ページ コントロール階層を再帰的に使用することは避け、その代わりにコントロールを登録によって直接提供するようにします。

最良のケースは、誰かが正当な理由でこのアイデアを却下することです。彼らは、私たちが持っていない問題について考えた、または同じことを達成するためのより良いアイデアを持っているからです。

4

1 に答える 1

0

ASP.NET ページは、インターフェイスの実装による HTTP ハンドラーでもあるため、MSDN ドキュメントの定義によりIHttpHandler、コレクションと共に使用する有効な候補です。HttpContext.Items

ページ コントロールは効果的にハンドラー内にあるため、Items コレクションからページ コントロールを参照する明らかなリスクはないようです。

私の主な関心事は、ページのコンテキストでのコントロール オブジェクトの有効期間と、コレクションが関連する要求/コンテキストの有効期間の延長でした。ただし、コントロールは、ページが完成したときに IDisposable を介して適切に破棄され、ガベージ コレクターは、ページ ハンドラーの有効期限が切れてからすぐに、Items コレクションから最終的に解放されたときにコントロールをクリーンアップします。

于 2013-07-05T03:59:04.100 に答える