Bug lors du déploiement d'une application sur srv 2008 R2

Résolu
rhemiel Messages postés 6 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 juin 2010 - 16 juin 2010 à 14:28
rhemiel Messages postés 6 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 juin 2010 - 17 juin 2010 à 13:42
Bonjour,

Voilà je viens de terminer la préparation d'une application, et lors de son déploiement sur un nouveau serveur en 2008 R2, j'ai droit à l'erreur ci-dessous. Pourtant je n'avais absolument aucune erreur sur mon pc (sous xp sp3 et au départ de Visual Studio 2008)

J'ai vérifié au niveau de la framework, j'utilise la 3.5 pour la compilation, et celle ci est installée sur le serveur.
Le message fait penser que j'aurais oublié un 'New', mais je ne comprends pas pq cela fonctionne sur mon pc de dev alors.

Avez-vous une idée ?

D'avance je vous remercie.

Ci dessous, l'erreur renvoyée.

Microsoft .Net Framework

Une exception non gérée s'est produite dans votre application. Si vous cliquez sur Continuer, l'application va ignorer cette erreur et essayer de continuer.
Si vous cliquez sur Quitter, l'application va s'arrêter immédiatement.


La référence d'objet n'est pas définie à une instance d'un objet.

#####################
Détails
#####################

Consultez la fin de ce message pour plus de détails sur l'appel du débogage
juste-à-temps (JIT) à la place de cette boîte de dialogue.

************** Texte de l'exception **************
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
à GesToAD.Form1.Form1_Load(Object sender, EventArgs e)
à System.EventHandler.Invoke(Object sender, EventArgs e)
à System.Windows.Forms.Form.OnLoad(EventArgs e)
à System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
à System.Windows.Forms.Control.CreateControl()
à System.Windows.Forms.Control.WmShowWindow(Message& m)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Assemblys chargés **************
mscorlib
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
GesToAD
Version de l'assembly : 1.0.0.0
Version Win32 : 1.0.0.0
CodeBase : file:///C:/Users/Administrateur/Desktop/GesToAD_SQL/GesToAD.exe
----------------------------------------
Microsoft.VisualBasic
Version de l'assembly : 8.0.0.0
Version Win32 : 8.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Data
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_64/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Xml
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data.DataSetExtensions
Version de l'assembly : 3.5.0.0
Version Win32 : 3.5.30729.4926 built by: NetFXw7
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Data.DataSetExtensions/3.5.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll
----------------------------------------
System.Core
Version de l'assembly : 3.5.0.0
Version Win32 : 3.5.30729.4926 built by: NetFXw7
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Configuration
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
mscorlib.resources
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase : file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_fr_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Débogage JIT **************
Pour activer le débogage juste-à-temps (JIT), le fichier de configuration pour cette
application ou cet ordinateur (machine.config) doit avoir la valeur
jitDebugging définie dans la section system.windows.forms.
L'application doit également être compilée avec le débogage
activé.

Par exemple :

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

Lorsque le débogage juste-à-temps est activé, les exceptions non gérées
seront envoyées au débogueur JIT inscrit sur l'ordinateur
plutôt que d'être gérées par cette boîte de dialogue.

9 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
17 juin 2010 à 00:18
Ah, j'avais pas vu le Trace : GesToAD.Form1.Form1_Load(Object sender, EventArgs e)

C'est bien dans ton load, normal que tu n'ai pas de message d'erreur sous VS/VB.

Reprend ton projet dans ton pc de dev, recompile-le puis va dans le dossier Bin\Release et lance ton appli directement, si tu as le même message le problème vient du code, sinon il vient de l'environnement et donc c'est un oublis de gestion des erreur(Try/Catch).

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
17 juin 2010 à 00:16
Salut, tu t'es simplement planté dans ton code.

La référence d'objet n'est pas définie à une instance d'un objet


Ce qui veut dire que quelque part dans ton code, une propriété ou une méthode d'un objet qui n'est pas instancié est appelé.

Voila pourquoi lors ce qu'on conçoit des applications à déployer sur d'autres postes il est préférable d'utiliser les option Strict et Explicit.

Il faut aussi penser à la gestion des erreurs, ex dans lequel une "NullReferenceException" peut se produire:

Dim Toto As DataTable

If Toto.Row.Count = 0 Then
'Code...


Ici on accède à un objet qui n'a pas été instancié (à l'aide de New) et a donc la valeur nulle (Nothing). Mais comme tu le dis plus haut, tu as testé avant le soft.

Il y a aussi d'autres possibilité :

'Ouvre le fichier de Toto.txt sur C:\
Dim File As New IO.FileInfo("C:\Toto.txt")

'Affiche un message si toto est plus grand que 200 Octets
If File.Length > 200 Then
MsgBox("Fichier plus grand que 200 octets")
End If

Le seul bémol c'est que je ne teste pas l'existance de toto.txt avant, donc si sur le poste cible il n'existe pas, File ne sera pas Nulle mais l'accès à sa propriété Length(Get) déclanchera une exception.

De plus en mode déboguage sous Visual Studio, dans certains cas tu n'auras pas de message d'erreur (lors ce que le code se trouve dans le load), et la procédure se terminera simplement à l'endroit de l'exception.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
rhemiel Messages postés 6 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 09:01
Bonjour,

Comme tu le dis si bien, je me suis planté dans mon code.
Je viens en effet de réaliser les démarches qui tu me proposais (recompiler et tester l'application directement) et j'obtiens le même message d'erreur.

Je vais donc reprendre mon code petit à petit. Par contre y aurait-il un moyen plus efficace (rapide) de connaitre la source de l'erreur ?

En tout cas merci
0
rhemiel Messages postés 6 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 09:08
Petite information en plus, je tiens à préciser que j'ai les options explicit et strict à On depuis le début de la programmation ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
17 juin 2010 à 09:09
Bien en fait ton code se situe au niveau du load, donc ca devrait pas être trop difficile, je suppose que ta procédure ne comporte pas 10 000 lignes de code, le plus simple serait d'éxécuter ton code sous Visual Basic, et de mettre des points d'arrêt partout, vois à partir de quelle ligne de code la procédure n'exécute plus le code et Bingo ! Si tu ne trouves toujours pas après ca, tu peux poster ton code je jetterais un coup d'oeil.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
rhemiel Messages postés 6 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 09:13
Bien en fait le load est assez chargé, c'est une application complètement automatisée ;)
J'ai dû repartir d'une appli déjà existante.

Quoiqu'il en soit je vais tester mon code en suivant tes conseils et je reviendrai faire un tour par ici si nécessaire.(en tout cas de toute facon pour cocher la case résolu ;) )
Je te remercie en tout cas pour ton aide.

Bonne journée,
0
rhemiel Messages postés 6 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 11:22
Voilà les lignes de codes incriminées :

Dim connectionStringMySQL As String
connectionStringMySQL = ConfigurationManager.ConnectionStrings("MySQL").ConnectionString

Je vais donc rechercher ma connectionstring dans l'app.config, elle y est écrite de la manière suivante :



Bizarrement si j'entre manuellement la même chaine de connection en dur, cela fonctionne. J'ai également essayé de faire parvenir l'information via un fichier xml dans lequel je recupère d'autres valeurs perso, et c'est le même echec.

Une idée ? Problème de syntaxe dans le fichier de config ou xml ? quelque chose qui ne passerait pas ?


En tout cas je coche comme résolu, et je vous remercie grandement ;)
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
17 juin 2010 à 12:06
Pour ce qui est de la chaine de connexion c'est normale, le type ConnectionString stocké dans les paramètres d'application ne retient pas les mots de passe par sécurité (c'est un simple fichier visible sur le disque).

Question : Pourquoi de ne pas laisser la chaine de connexion en dur dans l'appli ? De toute façon à part la stocker dans un fichier crypté, il n'y a pas d'autres solution plus sécurisé (en exculant la saisie des Identifiants par l'utilisateur).

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
rhemiel Messages postés 6 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 17 juin 2010
17 juin 2010 à 13:42
C'était une question de facilité pour la modification de la chaine (facilité demandée par l'employeur).
Je comprends pourquoi il ne rapatrie pas le mot de passe venant de l'app.config, mais pourquoi d'un fichier xml fait main je ne peux récuperer la valeur correctement ?

En tout cas merci, si je ne peux passer par un fichier je laisserai la chaine de connexion dans l'appli en dur.
0
Rejoignez-nous