2009-06-12 31 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

相关问题