2009-06-12 66 views
1

我正在使用存儲在數據庫中的SessionObject。 SessionObject包裝在實現IDisposable的SessionObjecWrapper中。 然後將SessionObjectWrapper放置在HttpContext.Current.Session中。HttpContext.Current.Session中的IDisposable對象是否放置在Application_End上?

在會話到期時,ASP.NET是否會「處置」(或讓GC做到這一點)會話內的任何對象?

並在應用程序關機?

我正在測試這個,我沒有看到這種情況發生。我應該如何以一種乾淨的方式做到這一點?

+0

此外,當我關閉網站(通過觸摸web.config)我沒有看到global.asax的Session_End方法被稱爲 – Jaap 2009-06-12 15:58:26

回答

2

您可以自己處理對象,也可以使用終結器方法。 GC不會調用Dispose(),但會調用終結器。

我不知道你在Dispose()中需要做什麼。有些東西是不可能在終結者(如訪問其他管理對象)

+0

好吧,這意味着我將不得不實現Session_End並迭代會話中的項目,並對那些實現IDisposable> – Jaap 2009-06-15 11:22:01

相關問題