【问题标题】:Are IDisposable objects in HttpContext.Current.Session disposed on Application_End?HttpContext.Current.Session 中的 IDisposable 对象是否部署在 Application_End 上?
【发布时间】:2009-06-12 15:54:14
【问题描述】:

我正在使用存储在数据库中的 SessionObject。 SessionObject 封装在实现 IDisposable 的 SessionObjecWrapper 中。 然后将 SessionObjectWrapper 放在 HttpContext.Current.Session 中。

在会话到期时,ASP.NET 是否“处理”(或让 GC 仅执行此操作)会话内的任何对象?

在应用程序关闭时?

我正在对此进行测试,但没有看到这种情况发生。我应该如何以一种干净的方式做到这一点?

【问题讨论】:

  • 另外,当我关闭网站(通过触摸 web.config)时,我没有看到 global.asax 的 Session_End 方法被调用

标签: asp.net session idisposable


【解决方案1】:

您可以自己处置对象,或者改用终结器方法。 GC 永远不会调用 Dispose(),但它会调用终结器。

我不知道您需要在 Dispose() 中做什么。有些事情在终结器中是不可能的(比如访问其他托管对象)

【讨论】:

  • 好的,这意味着我必须实现 Session_End 并遍历会话中的项目并在那些实现 IDisposable 的项目上调用 Dispose>
猜你喜欢
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 2012-12-21
相关资源
最近更新 更多