ASP.NET では、項目が IDisposable を実装するセッション状態のままであるが、セッションの有効期限が切れたときにアプリケーションによって明確に削除および破棄されない場合、Dispose() のコードが実行されるオブジェクトで Dispose が呼び出されますか?
3 に答える
IDisposableパターンが適切に実装されている場合は、そうです (つまり、クラスのデストラクタがオブジェクトの破棄を処理します)。Dispose()ASP.NET セッション マネージャーが、.NETを実装するクラスの明示的な呼び出しについて保証しているとは思えませんIDisposable。
Mark の積極的な反対にもかかわらず、ファイナライザを「日常的に」追加することを提案しているわけではないことに注意してください。セッションの有効期限が切れたときにオブジェクトのメソッドを呼び出したい場合は、これが実行可能なオプションであることを単に提案しています。Dispose
セッションに Disposable オブジェクトがあることを懸念しています。ほぼ確実にスケーラビリティの問題が発生します。使い捨て可能なものはすべて、限られたリソースに接続されている可能性があります。アクティブなセッションが多数ある場合、そのリソースを使い果たす可能性があります。第 2 に、多くの (ほとんどの?) 使い捨てオブジェクトは Web ファームではうまく機能しないと予想されます。それらが関連付けられているリソースはおそらく単一のマシンに対してローカルであり、シリアル化せず、同じマシン内の別のマシンで逆シリアル化されないからです。州。