IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment trouver d'où provient l'erreur "La référence d'objet n'est pas définie à une instance d'un objet." [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2002
    Messages : 210
    Points : 102
    Points
    102
    Par défaut Comment trouver d'où provient l'erreur "La référence d'objet n'est pas définie à une instance d'un objet."
    Bonjour à toutes et tous,

    Je suis débutant (comme mon préfixe l'indique ) dans le monde de C#.
    Malgré tout, je dois modifier une application en C#. J'utilise Visual Studio 2015.


    L'application se connecte à un site https://...
    Envoie des données part POST (données text et fichiers .zip)
    Reçois en retour des fichiers (.zip) de réponses.


    Pour l'instant, j'arrive à me connecter sur le site https:// faire la procédure de connexion (envoi de données) et je reçois un fichier de retour, comme de quoi je peux continuer la procédure. (Merci Monsieur Dorin ).


    Le but maintenant est d'envoyer les données (text et fichiers). Malheureusement, j'ai dès le départ de ma procédure une erreur.

    Voici le code où mon système s'arrête avec l'erreur {"La référence d'objet n'est pas définie à une instance d'un objet."}
    Comment puis-je savoir de quel objet il est question et quand je l'ai trouvé, que dois-je faire pour l'instancier ?

    J'ai définit un new uri avec l'adresse données pour requestUri

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(requestUri);
    Ce code faisait partie d'un autre ensemble qui lui fonctionnait il y a peut. J'ai donc, sûrement oublier (ou mal compris) quelque chose. Mais je ne sais pas encore quoi.

    D'avance merci pour votre aide.

    Belle journée.


    Bien à vous,
    D.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    novembre 2009
    Messages
    1 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 754
    Points : 4 640
    Points
    4 640
    Par défaut
    Probablement que ton WebRequest.Create(requestUri); retourne null, et donc impossible de la cast en HttpWebRequest.
    Un bon moyen de t'en rendre compte et de passer par une variable temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WebRequest tmpWebRequest = WebRequest.Create(requestUri);
    if(tmpWebRequest !=null)
    {
     HttpWebRequest webrequest = (HttpWebRequest) tmpWebRequest;
    }
    Si c'est le cas c'est peut etre ta requestUri qui ne mène nul part ?

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 859
    Points : 1 831
    Points
    1 831
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Probablement que ton WebRequest.Create(requestUri); retourne null, et donc impossible de la cast en HttpWebRequest.
    Si WebRequest.Create(requestUri) renvoyait null le cast qui vient juste après ne passerait pas et lancerait une InvalidCastException. Une NullReferenceException se produit généralement quand on essaie d'accéder à un membre d'un objet null, ce qui peut être le cas si requestUri n'est pas null (sinon WebRequest.Create lancerait une ArgumentNullException) mais que d'une manière ou d'une autre l'une de ses propriétés l'est.

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    2 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 2 644
    Points : 10 374
    Points
    10 374
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Si WebRequest.Create(requestUri) renvoyait null le cast qui vient juste après ne passerait pas et lancerait une InvalidCastException.
    Erreur ! La valeur null peut être casté en n'importe quel type référence. Donc non, cela ne génère pas d'erreur. Le seul moment où cela génère une erreur est lorsqu'on essai de caster un objet d'un type incompatible (par exemple, un string en WebRequest). Dans ce cas, on a bien l'exception InvalidCastException
    Citation Envoyé par Noxen Voir le message
    Une NullReferenceException se produit généralement quand on essaie d'accéder à un membre d'un objet null, ce qui peut être le cas si requestUri n'est pas null (sinon WebRequest.Create lancerait une ArgumentNullException) mais que d'une manière ou d'une autre l'une de ses propriétés l'est.
    Exact. Mais ici, je ne vois pas où pourrait intervenir cette erreur. Si requestUri était null, il y aurait bien une exception, mais du type ArgumentNullException. Du coup, je me demande si la ligne identifiée est bien la bonne. Peut-on avoir un morceau de code plus complet et pas juste une ligne pour avoir une vision plus globale ?
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    novembre 2009
    Messages
    1 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : novembre 2009
    Messages : 1 754
    Points : 4 640
    Points
    4 640
    Par défaut
    Effectivement le cast d'un objet null ne fait pas une null ref .
    Peut etre que requestUri est une propriété (ne respectant pas les conventions de nommages), et l'erreur provient du get ?

  6. #6
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 859
    Points : 1 831
    Points
    1 831
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    Erreur ! La valeur null peut être casté en n'importe quel type référence.
    C'est un point qui m'avait échappé, merci pour la correction.

    Citation Envoyé par François DORIN Voir le message
    Exact. Mais ici, je ne vois pas où pourrait intervenir cette erreur. Si requestUri était null, il y aurait bien une exception, mais du type ArgumentNullException. Du coup, je me demande si la ligne identifiée est bien la bonne. Peut-on avoir un morceau de code plus complet et pas juste une ligne pour avoir une vision plus globale ?
    Je pensais à quelque chose du style requestUri.Host.ToLower() dans WebRequest.Create où Host serait null (juste pour l'exemple, je ne suis même pas sûr que cette situation soit possible) ; mais le cas me paraît également improbable et je me demande aussi si l'erreur se situe bien à cet endroit.

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2002
    Messages : 210
    Points : 102
    Points
    102
    Par défaut
    Bonjour à tous,

    Un grand merci pour votre aide et vos conseils.

    Je ne sais pas vraiment ce qu'il c'est passé, mais en réinstallant Visual Studio 2015 +màj. Mes fonctions ne renvoient plus d'erreurs.

    Encore merci du temps que vous avez consacré à ma demande.

    Bonne continuation.

    D.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/10/2011, 10h31
  2. Réponses: 6
    Dernier message: 31/03/2010, 09h56
  3. Réponses: 7
    Dernier message: 31/12/2009, 09h10
  4. Réponses: 0
    Dernier message: 29/12/2009, 09h51
  5. Réponses: 8
    Dernier message: 04/06/2007, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo