2009-06-12 3 views
1

J'utilise un objet SessionObject stocké dans une base de données. Le SessionObject est encapsulé dans SessionObjecWrapper qui implémente IDisposable. Le SessionObjectWrapper est ensuite placé dans HttpContext.Current.Session.Les objets IDisposable dans HttpContext.Current.Session sont-ils disposés sur Application_End?

À l'expiration de la session, ASP.NET "dispose-t-il" (ou laisse le GC faire cela) de tout objet dans la session?

Et à l'arrêt de l'application?

Je suis en train de tester cela et je ne vois pas cela arriver. Comment est-ce que je devrais faire cela de manière propre?

+0

De plus, lorsque j'arrête le site (en touchant web.config), la méthode Session_End de global.asax ne s'appelle pas – Jaap

Répondre

2

Vous pouvez disposer les objets vous-même ou utiliser une méthode de finalisation à la place. Le GC n'appelle jamais Dispose(), mais appelle le finaliseur.

Je ne sais pas ce que vous devez faire dans votre Dispose(). Certaines choses ne sont pas possibles dans un finaliseur (comme l'accès à d'autres objets gérés)

+0

Ok, cela signifie Je vais devoir implémenter Session_End et parcourir les éléments de la session et appeler Dispose sur ceux qui implémentent IDisposable> – Jaap

Questions connexes