Bonjour à tous,

J'ai un petit problème d'instances qui trainent sans être supprimées correctement.

e m'explique :
Dans mon fichier Global.asax j'ai les fonctions suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
protected void Session_Start()
        {
            ech = new EchSvr();
            HttpContext.Current.Session.Add("objEchServer", ech);
        }
 
        protected void Session_End()
        {
            ech = null;            
        }
L'objet ech est en fait une classe présente dans une DLL COM développée en VB6. Je passe mon instance dans la session pour pouvoir récupérer l'objet dans les contrôleurs ce qui me permet d'avoir une instance par utilisateur. Dans cette DLL, une connexion à une base SQLServeur est réalisée et cette connexion est fermée lors de la destruction de l'instance. Or je vois que dans SQLServer la connexion reste toujours active.

En creusant un peu je me suis aperçu que lors du 2ème passage dans Session_Start (après un session_End), l'instance ech à le même hashcode que la première. A part le ech = null je ne vois pas quoi faire d'autre.

Ce qui m’embête aussi c'est que j'aurais bien voulu passer l'instance par référence dans ma session mais "HttpContext.Current.Session.Add" n'accepte qu'un passage par valeur donc déjà l'instance est copiée.

Si vous avez des idées d'où cela peut-il venir je suis preneur, sinon comment peut-on voir précisément les instances créées ? via un utilitaire où dans VS2010 directement ?

Merci