[VB.Net] Problème d'instanciation d'objet dans une appli web
cs_Razalgood
Messages postés9Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention 6 février 2006
-
19 janv. 2006 à 14:28
cs_Razalgood
Messages postés9Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention 6 février 2006
-
6 févr. 2006 à 17:13
Bonjour,
J'obtiens ce message d'erreur :
La référence d'objet n'est pas définie à une instance d'un objet.
Message déjà rencontré lorsqu'on fait appel à une variable non déclarée. Mais là mon problème se pose dans le fait que j'obtiens ce message lors que je lance 2 Internet Explorer et que je clique sur le même bouton.
En fait je suppose que dans ma procédure où je déclare un DataReader où je l'instancie, l'utilise puis le close, le fait d'appeler 2 fois cette procédure en même temps via 2 IE a pour effet que de ne créer qu'un seul objet et donc le premier passage dans la procédure le close et le second lorsqu'il veut faire de même ne peut pas car il est déjà fermé.
Comment puis-je m'en sortir ? Est-ce normal ? Dois-je interdire la possibilité d'ouvrir 2 fois la même page (pas pratique car besoin fonctionnel) ? Est-ce un problème d'ouverture dans 2 IE qui ne provienne pas d'une même session ?
Enfin je ne sais pas trop donc si vous avez des idées...
Cordialement,
Razalgood
Config :
- VB.NET sous visual studio 2003
- Windows server 2003
- Serveur Web IIS
- Framework .Net 1.1.4322.573
- Oracle 8.1.6
- Connexion OleDB
A voir également:
[VB.Net] Problème d'instanciation d'objet dans une appli web
L'erreur se produit à : ReaderLogin .Close()
Lorsque j'execute cette fonction dans une seule fenêtre, je n'ai pas de problème.
Par contre lorsque je la lance en simultanée dans 2 fenêtres j'ai mon problème.
Ai-je un problème d'architecture ? Est-ce une question d'option ? Est-il impossible de lancer 2 fois la même page sur un poste sans risque de conflit d'objets ?
En fait c'est un problème qui s'avère avoir certainement la même origine que celui-ci http://www.vbfrance.com/forum.v2.aspx?ID=637797 à ceci près que l'un appelle une procédure d'un module alors que l'autre une fonction de la page concernée.
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 20 janv. 2006 à 11:36
ok
ce que je te conseil :
- Mettre toutes tes fonctions dans une class
- Ouvrir ta connexion en début d'application
Et Fermer ta connexion à la fin de ton application
- Faire le reste entre temps
- Faire en sorte de ne pas utiliser le même readerlogin en même temps pour tes 2 exécutions
- Eviter le dispose sauf à la fin de l'application
Si tu arrives à faire tout ça y a plus de souci
ps : en mettant tes fonctions dans une class si c bien fait tu peux exécuter simultanément autant d'instances que tu veux
cs_Razalgood
Messages postés9Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention 6 février 2006 20 janv. 2006 à 11:56
merci de ta réponse,
par contre du coup j'ai des questions par rapport à ça :
- Mettre toutes tes fonctions dans une class
=> même si ma fonction ne me sert que dans une seule page ? quel bénéfice par rapport à la classe de la page concernée ?
- Ouvrir ta connexion en début d'application
Et Fermer ta connexion à la fin de ton application
=> travaillant sur une base oracle n'autorisant que 55 sessions simultanées avec actuellement une 20aine de session de libre en moyenne, si j'ouvre ma connexion en début d'appli pour ne la fermer qu'en fin, il ne faut pas que j'ai plus de 20 personnes qui se connecte sous peine d'impossibilité de connexion ?
- Faire en sorte de ne pas utiliser le même readerlogin en même temps pour tes 2 exécutions
=> là je vois pas comment, si c'est la même page que j'appelle le code ne change pas, mes objets gardent le même nom, non ? Si non comment créer des objets avec un nom dynamique ?
ai-je bien interprété ce que tu m'as dit ?
Razalgood
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Razalgood
Messages postés9Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention 6 février 2006 20 janv. 2006 à 12:31
Oula non ! je suis prêt à changer tout le code s'il le faut, et c'est très gentil à toi de m'expliquer ce qui faut faire, c'est juste que j'essaye de comprendre pourquoi afin d'éviter de refaire ces erreurs.
Je vais faire mes changements pis je te tiens au courant.