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

Dotnet Discussion :

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


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier Avatar de jewePat
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut La référence d objet n est pas définie à une instance d un objet
    Bonjour,

    J'ai l'erreur classique qui survient lorsqu'on accède à un objet null.

    Dans mon cas, l'erreur se produit lors de la création avec new.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;
    using WcfServiceSAI.Entites;
    using WcfServiceSAI.Models;
    using System.Web.Services;
     
    namespace WcfServiceSAI
    {
        // REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour changer le nom de classe "Service" dans le code, le fichier svc et le fichier de configuration.
        // REMARQUE : pour lancer le client test WCF afin de tester ce service, sélectionnez Service1.svc ou Service.svc.cs dans l'Explorateur de solutions et démarrez le débogage.
        public class Service : IService
        {
            private static DataModelSAIDataContext modelSAI;
     
            public Service ()
            {           
            }
     [WebMethod]
       public Personne ValiderCandidat (Int32 numDossier, String prenom)
            {
                Personne p = new Personne();
                try
                {
                     var model = new DataModelSAIDataContext ();
                     // suite du code
     
                 }
                catch(Exception e)
                {
                    Console.WriteLine("Error", e);
                } 
             return p;
          }
       }
    }


    ValiderCandidat est appelé ainsi dans un autre projet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using WcfServiceSAI;
    using WcfServiceSAI.Models;
    using WcfServiceSAI.Entites;
     
    namespace WebApplicationSAI
    {
        public partial class WebFormSAI : System.Web.UI.Page
        {
     
            private Service ws =  new Service ();
     
            protected void Page_Load(object sender, EventArgs e)
            {
            }
     
            protected void btnValiderOCI_click (object sender, EventArgs e)
            {
     
                var idOCI = Convert.ToInt32(TextBox1.Text);
                var name = TextBox2.Text;
     
                Personne personne = ws.ValiderCandidat (idOCI , name);
            }       
        }
    }
    Où est ce que je peux instancier mon DataModelSAIDataContext pour qu'il ne plante pas?

    Merci bcp!

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    tu peux instancier une classe de partout sans problème

    par contre si dans le constructeur de cette classe tu accèdes à quelque chose qui vaut null, le constructeur plante et l'exception remonte à celui qui a fait le new, ca doit être ca ton problème


    d'une manière générale quand ca plante ca s'arrête sur la ligne qui plante sauf s'il y a un try catch qui intercepte l'erreur
    auquel cas tu peux faire ctrl+alt+e pour cocher exceptions common language runtime exceptions, et malgré les try catch vs fera pause sur l'erreur en debug
    (sinon des points d'arret dans les catchs non encore testé et ex.stacktrace contient la ligne d'erreur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier Avatar de jewePat
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    Merci Pol63 de ta réponse.

    En fait, ma classe est un dbml, donc classe LINQ to SQL. Et le problème est que lorsque la méthode est appelée directement dans mon projet de service (premier flèche sur l'image), tout se passe bien.

    Mais quand l'appel est fait à partir de l'autre projet (grosse flèche sur l'image attachée), ça plante et beaucoup d'informations dans l'attribut mappingSource qu'on a dans l'image incluse sont absentes


    Nom : dataModell.jpg
Affichages : 2811
Taille : 211,6 Ko.

    Il faudrait peut etre que la création de mon objet se fasse en déhors de méthode et donc en déhors de mon service?? mais là non car l'objet est requis pour la suite du trtaitement dans la méthode.

    Comment puis à quel endroit pourrais-je faire mon new?

    Merci encore

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    c'est le problème d'utiliser des choses toutes faites, on ne sait pas forcément ce qui se passe derrière et le jour où ca marche pas on galère ...
    c'est peut etre un fichier de config qui n'est pas présent ou pas paramétré pareil dans l'autre projet, ou lors de l'ajout du dbml du code caché a été généré ...

    mais un new peut etre fait n'importe où si c'est bien codé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier Avatar de jewePat
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 6
    Par défaut
    la classe possède 4 constructeurs, dont un par defaut mais qui hérite d'une base ayant 2 paramètres dont le 2e est mappingSource.

    et le problème justement est là. Parce que mappingSource est un AttibuteMappingSource, un sealed class qui hérite elle encore de MappingSource, bref, il y a tout une chaine de dépendance qui fait que appelé de l'extérieur du projet dans lequel la classe est définie, le new à cette classe génère un NullException.

    Mais je crois qu'il y a certtainement quelqu'un qui a trouvé ou qui trouvera le fix à ce bug. Le problème est exposé et merci à tous vos interventions qui surement aideront un paquet de monde...on sourit quand même après tout

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    linq to sql est une techno abandonnée depuis de longues années, donc il n'y aura plus de correctifs ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/09/2007, 10h38
  2. Réponses: 2
    Dernier message: 09/09/2007, 14h25
  3. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  4. Réponses: 24
    Dernier message: 01/06/2007, 09h26
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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