2011-12-18 15 views
0

これらはすべてInterface IHttpHandlerに継承されているため、asp.netは同じ方法でそれらを呼び出します。しかし、aspxページがIDisposeを継承したのはなぜですか? Asp.netはそれを達成する方法ですか?なぜ.aspxはIDisposeを継承しますが、.ashxは継承しませんか?

+2

最初にお読みください:http://stackoverflow.com/questions/5469491/aspx-vs-ashx-main-difference –

+0

この問題は私の問題を解決できません。申し訳ありませんが、アプリケーションは工場(PageHandlerFactoryまたは(なぜなら、aspxページはUIコントロールを持っていることになっています)を継承していたのです。なぜなら、aspxページは、IDispose – Dozer

+0

aspxがUIコントロールを持っていたからです。 StakcOverflowは、開発中に直面するプログラミング問題を修正することに関するものです。あなたは非常に特定の製品に関連するクエリを持っている場合は、より良い場合は、ベンダー、この場合はMicrosoftに問い合わせてください。つまり、IDisposeまたはashxを持つaspxに関する実装上の問題がある場合は、その問題を説明してください。その問題の回避策または解決策をお伝えします。しかし、理由を知る必要がある場合は、マイクロソフトのチームにお尋ねください –

答えて

2

ASP.NET ページは、順番にIDisposableを実装System.Web.UI.Controlから継承抽象System.Web.UI.TemplateControlクラスを実装する基本System.Web.UI.Pageクラスから継承しています。コードで

、ControlクラスのDispose()について発言があります:.aspxファイルは、本質的にIDisposableインタフェースを実装した理由だ

 
// Summary: 
//  Enables a server control to perform final clean up before it is released 
//  from memory. 

が。

さて、ASP.NET ハンドラが直接他のクラスを継承せずにSystem.Web.IHttpHandlerインタフェースを実装している - 独立したインタフェースであること、それはIDisposableを実装していない - それは、そのようなものを追加するか否かを決定するために、プログラマ次第です。

0

あなたの質問は、aspx(Page)のコードDispose()のコードはどのように呼び出されるのですか?

Pageまたは別の実装が含まれているかどうかにかかわらず、ASP.NETフレームワークはIHttpHandlerしか見ることができません。それはほとんど間違いありません。 何かはページのコンストラクタを呼び出す必要があります。

IL Spyのようなツールを使用して、異なる処理の場所とその外観を調べることができます。

+0

あなたの答えをありがとう、私はそれを見つけることを試みている。 – Dozer

関連する問題