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 :

'Alerte' est un 'espace de noms' mais est utilisé comme un 'type'


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut 'Alerte' est un 'espace de noms' mais est utilisé comme un 'type'
    Bonjour
    Est ce que quelqu'un pourrais m'expliquer le problème que je rencontre et comment trouver la solution?

    Message d'erreur :
    'Alerte' est un 'espace de noms' mais est utilisé comme un 'type'
    La ligne de code concerné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run(new Alerte());
    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Bah tu essaies de créer une instance de quelque chose qui n'est pas un type mais un namespace...

    Je soupçonne que tu as une classe appelée Alerte, et qu'elle se situe dans un namespace appelé aussi Alerte. Soit dit en passant, il faut éviter absolument ce genre de situation (cf. cette série de billets sur le blog d'Eric Lippert). Tu dois pouvoir régler le problème en ajoutant au début du fichier, ou en écrivant plutôt . Mais il vaudrait encore mieux changer le nom de la classe ou du namespace...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Ces bon sa fonctionne.
    Maintenant j'ai un autre probleme.

    Voici le code :
    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
     
    private void Alerte_Load(object sender, EventArgs e)
            {
     
                System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatesPolicy();
     
            }
            // Classe implémentant l'interface System.Net.ICertificatePolicy
            // Permet de toujours autoriser l'acceptation des certificats
     
            public class TrustAllCertificatesPolicy : System.Net.ICertificatePolicy
            {
     
                public bool CheckValidationResult(ServicePoint sp, X509Certificate cert, WebRequest req, int problem)
                {
                    return true;
                }
            }
    new TrustAllCertificatesPolicy(); n'accede pas à la classe TrustAllCertificatesPolicy(); Pourquoi?

  4. #4
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Elle y accède sans doute, mais comme tu n'as pas implicitement défini de constructeur tu ne le vois pas en débug j'imagine.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // constructeur 
    public TrustAllCertificatesPolicy() {
       // do something or not
    }
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ca y accèdera quand il y aura besoin de valider un certificat...

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    ok
    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
    41
    42
    43
    44
    45
    46
    47
    48
    private void Alerte_Load(object sender, EventArgs e)
            {
     
                System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatesPolicy();
     
            }
            // Classe implémentant l'interface System.Net.ICertificatePolicy
            // Permet de toujours autoriser l'acceptation des certificats
     
            public class TrustAllCertificatesPolicy : System.Net.ICertificatePolicy
            {
                // constructeur 
                public TrustAllCertificatesPolicy()
                {
                    // do something or not
                }
     
     
                public bool CheckValidationResult(ServicePoint sp, X509Certificate cert, WebRequest req, int problem)
                {
                    return true;
                }
     
            }
     
     
            //fonction qui creer le flux xml
            private static XmlNodeList MyGetChildNodes(String pPathString, String pPathXmlString)
            {
                // Crée XmlDocument
                XmlDocument doc = new XmlDocument();
                try
                {
                    //load charge le document
     
                    doc.Load(pPathString);
     
     
                }
                catch (Exception ex)
                {
     
                    // MessageBox.Show(ex.Message);
     
                }
                return doc.SelectNodes(pPathXmlString);
     
            }
    Quand j'utilise le deboguer il va bient dans public class TrustAllCertificatesPolicy ensuite il retourne sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatesPolicy();
    Puis il lance mon formulaire et rien ne se passe.

    J'aurai bien utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DoEvents();// reprend la main sur le formulaire sinon ecran figer
    Mais Je pense pas que le probleme vient que le formulaire se fige

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par xouzi Voir le message
    Puis il lance mon formulaire et rien ne se passe.
    Bah qu'est-ce que tu veux qu'il se passe ? Comme je te l'ai dit, ton TrustAllCertificatesPolicy ne sera utilisé que quand il y aura une certificat à valider. Tant que tu ne fais pas de communications HTTP, il n'y a aucune raison qu'il fasse quoi que ce soit...

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Quand tu dis que le certificat n'est pas valide c'est parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatesPolicy();
    est obsolète?

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par xouzi Voir le message
    Quand tu dis que le certificat n'est pas valide
    J'ai jamais dit ça, relis mon message...

    En fait je comprends pas ce qui te pose problème... Tu dis que le code de ta classe TrustAllCertificatesPolicy n'est pas exécuté, mais dans le code que tu as montré il n'y a aucune raison qu'il soit exécuté... C'est ce que j'essaie de dire depuis le début : il sera exécuté quand ce sera nécessaire, pas tout de suite.

    Sinon, CertificatePolicy est effectivement obsolète, il faut utiliser ServerCertificateValidationCallback à la place. Pour obtenir le même comportement tu peux faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void Alerte_Load(object sender, EventArgs e)
    {
        System.Net.ServicePointManager.ServerCertificateValidationCallback = TrustAllCertificates;
    }
     
     
     
    private static bool TrustAllCertificates(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        return true;
    }
    (mais là encore, TrustAllCertificates ne sera appelé que quand il y aura un certificat à vérifier)

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Je viens de comprendre. Je suis tout a fais d'accord avec toi. Cette parti me servira par la suite le problème c'est qu'a la fin il lance le programme tandis qu'il ne devrai pas.

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    private void Alerte_Load(object sender, EventArgs e)
            {
                System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatesPolicy();
     
            }
     
     
            public class TrustAllCertificatesPolicy : System.Net.ICertificatePolicy
            {
                public bool CheckValidationResult(ServicePoint sp,
                    X509Certificate cert, WebRequest req, int problem)
                {
                    return true;
                }
            }
     
     
            //fonction qui creer le flux xml
            private static XmlNodeList MyGetChildNodes(String pPathString, String pPathXmlString)
            {
                // Crée XmlDocument
                XmlDocument doc = new XmlDocument();
                try
                {
                    //load charge le document
     
                    doc.Load(pPathString);
     
     
                }
                catch (Exception ex)
                {
     
                   // MessageBox.Show(ex.Message);
     
                }
                return doc.SelectNodes(pPathXmlString);
     
     
            }
     
            private void button_tout_voir_Click(object sender, EventArgs e)
            {
     
                text = ""; 
                Application.DoEvents();// reprend la main sur le formulaire sinon ecran figer
     
                string bdd = ConfigurationManager.AppSettings["bdd"];// va chercher le nom de la base de donnée dans le fichier app.config
                string server = ConfigurationManager.AppSettings["server"];// va chercher le nom du serveur dans le fichier app.config
                string utilisateur = ConfigurationManager.AppSettings["utilisateur"]; // va chercher le nom de l'utilisateur dans le fichier app.config   
                string pwd = ConfigurationManager.AppSettings["pwd"];// va chercher le mot de passe dans le fichier app.config
     
     
                //initialisation de la progress bar
                progressBar1.Minimum = 0;
                //progressBar1.Maximum = 100;
                progressBar1.Value = 0;
                insert(requete_demande_complement, recherche, bdd, server, utilisateur, pwd, nom_serveur, categorie, probleme, objet_demande, os);
               xed(requete_Insertion_dexxon, bdd, server, utilisateur, pwd);
                parc(requete_parc_imprimante, bdd, server, utilisateur, pwd);
    Ce que je vois avec le debogeur c'est qu'il va bien dans : public class TrustAllCertificatesPolicy (ligne 8)
    Il retourne à ligne 3 System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatesPolicy();
    Et pour finir il va l'incollable (ligne5) et lance le formulaire ce qui ne devrai pas arriver

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par xouzi Voir le message
    Et pour finir il va l'incollable (ligne5) et lance le formulaire ce qui ne devrai pas arriver
    Mais pourquoi ça ne devrait pas arriver selon toi ? C'est parfaitement normal, il a fini de traiter l'évènement Load et sort de la méthode... Je ne comprends pas ce qui te gêne. Tu ne veux pas qu'il lance le formulaire ? Tu veux qu'il fasse quoi alors ?

    (Je suppose que tu voulais dire "l'accolade", pas "l'incollable"...)

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Pour moi le formulaire devrait se lancer au moment du private void button_tout_voir_Click car c'est la ou la progressbar va prendre des valeurs. Mais je comprend pas pourquoi il va pas plus loin pourquoi il s'arrete au lieu de continuer

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par xouzi Voir le message
    Pour moi le formulaire devrait se lancer au moment du private void button_tout_voir_Click car c'est la ou la progressbar va prendre des valeurs. Mais je comprend pas pourquoi il va pas plus loin pourquoi il s'arrete au lieu de continuer
    La form s'affiche quand tu fais Show ou ShowDialog... button_tout_voir_Click est déclarée dans la form Alerte, non ? Donc ça ne peut pas s'exécuter avant que la form ne soit affichée...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2009, 17h34
  2. Réponses: 3
    Dernier message: 10/09/2009, 16h24
  3. Réponses: 4
    Dernier message: 27/11/2008, 02h03
  4. Réponses: 2
    Dernier message: 13/04/2007, 18h20
  5. Réponses: 3
    Dernier message: 05/03/2007, 11h13

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