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

Services Web Discussion :

System.Management.ManagementException: generic failure


Sujet :

Services Web

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut System.Management.ManagementException: generic failure
    Bonjour,

    je monte un web service afin de configurer les DNS d'un serveur, seul problème une erreur se déclanche mais pas moyen de trouver une solution :

    System.Management.ManagementException: Échec générique
    à System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
    à System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
    à System.Management.ManagementObjectCollection.get_Count()
    à WebService1.Service1.DomainExists(String domainName) dans C:\Users\****\Documents\Visual Studio 2008\Projects\WebService1\WebService1\Service1.asmx.cs:ligne 120<br/><br/> à System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
    à System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
    à System.Management.ManagementObjectCollection.get_Count()
    à WebService1.Service1.DomainExists(String domainName) dans C:\Users\****\Documents\Visual Studio 2008\Projects\WebService1\WebService1\Service1.asmx.cs:ligne 120
    et voici le code correspondant très léger :

    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
    public Service1(string serverName)
            {
                     ConnectionOptions con = new ConnectionOptions();
                     con.Authentication = AuthenticationLevel.Connect;
                     session = new ManagementScope("\\\\" + serverName + "\\root\\MicrosoftDNS", con);
                     session.Connect();
                     this.Server = serverName;
            }
     
    [WebMethod(EnableSession = true)]
            public string verifDomainExist(string serverName, string domainName)
            {
                service = new Service1(serverName);
                string result = service.DomainExists(domainName);
                return result;
            }
     
            public string DomainExists(string domainName)
            {
                //service = new Service1(serverName);
                try
                {
                bool retval = false;
                string wql = "";
                wql = "SELECT *";
                wql += " FROM MicrosoftDNS_ATYPE";
                wql += " WHERE OwnerName = '" + domainName + "'";
                ObjectQuery q = new ObjectQuery(wql);
                ManagementObjectSearcher s = new ManagementObjectSearcher(this.session, q);
                ManagementObjectCollection col = s.Get();
                int total = col.Count;
                foreach (ManagementObject o in col)
                {
                    retval = true;
                }
                return "ok";
                }
                catch(Exception ex)
                {
                    return ex.ToString()+"<br/><br/>"+ex.StackTrace.ToString();
                }
            }
    l'erreur est signalée au niveau de int total (qui sert a rien au passage), si je commente la ligne, l'erreur descend et arrive sur le foreach ?

    Je suis super en galère se vois vraiment pas d'où cela vient et comment le résoudre.

    Si quelqu'un à déjà utilisé les webservices pour configurer des DNS cela serait le MUST

    Merci

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Dans la doc de la propriété Count (http://msdn.microsoft.com/fr-fr/libr...ion.count.aspx) on lit :

    Cette propriété est très coûteuse - elle exige que tous les membres de la collection soient énumérés.

    On peut penser que c'est l'énumération qui entraine la plante.

    Plus loin on lit aussi :
    (rubrique plateformes)

    Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

    Regarde donc ta plateforme d'exécution, regarge di tu peux itérer sur l'ensemble de la collection, etc .....

  3. #3
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    C'est peut être tout simplement un problème de droit.
    Si le webservice tourne sous IIS, il tourne sous le compte utilisateur IIS qui n'a peut être pas les droits d'administration.

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    C'est peut être tout simplement un problème de droit..
    Possible mais la nature de l'exception ne fait pas penser à cela a priori.

    Questions :

    - version de fw ?
    - version d'IIS ?
    - type et version d'OS ?

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut
    alors petite maj :

    Ce n'est pas un problème de droit a priori car je suis en train de tester directement dans une appli C# la méthode domainExist et le problème revient.

    Je suis sous Windows serveur 2008 R2 Standard Pack1

    FrameWork 3.5

    IIS 6.1 service pack 1

    Je comprend pas trop quand tu dit "Regarde donc ta plateforme d'exécution, regarge di tu peux itérer sur l'ensemble de la collection"

    plateforme d'exécution ?


    Je travail pour le moment directement en débogage sous visual studio 2008 puisque même avec IIS l'erreur se déclenche.

    Il est possible que je fasse un truc de travers, peut-être que ma requête n'est pas interprété ou n’aboutit pas à la lecture des DNS.

    Au debogage quand je rentre dans la ligne de déclaration de ma collection et que je lui affecte s.Get(); la variable col déclenche l’exception car c'est elle qui détient la méthode Count() donc que j'enlève la ligne ou je récupérer le nombre d'item de la collection l'erreur reste sur le foreach qui utilise "col" :
    Voici la version avec un poil plus de détail :

    System.Management.ManagementException was unhandled
    Message="Échec générique "
    Source="System.Management"
    StackTrace:
    à System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
    à System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
    à System.Management.ManagementObjectCollection.get_Count()
    à WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) dans C:\Users\Marc\Documents\Visual Studio 2008\Projects\WebService1\WindowsFormsApplication1\Form1.cs:ligne 40
    à 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.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    InnerException:
    en tout cas merci de m'aider sa fait plaise

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Y'a pas une inner exception?

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut
    non pas de INNER il reste vide ...

    Je vous donne un autre exemple ou ça merde une fois de plus mais cette fois aucune collection n'est en question, je vous colle le code permettant de créer simplement une zone DNS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    string sServerPath = "\\\\*******\\ROOT\\MicrosoftDNS";
                ManagementScope oScope = new ManagementScope(sServerPath);
                ManagementPath Path = new ManagementPath("MicrosoftDNS_Zone");
                ManagementClass DnsZoneClass = new ManagementClass(oScope, Path, null);
                ManagementBaseObject InputParams = DnsZoneClass.GetMethodParameters("CreateZone");
                InputParams["ZoneName"] = "sample.com";
                InputParams["ZoneType"] = Convert.ToInt32(0);
                InputParams["DataFileName"] = "sample.com.dns";
                ManagementBaseObject OutParams = DnsZoneClass.InvokeMethod("CreateZone", InputParams, null);
    Et dès que l'on invoque la méthode "CreateZone" sur la dernière ligne, déclenchement de l'Exception :

    System.Management.ManagementException was unhandled
    Message="Échec générique "
    Source="System.Management"
    StackTrace:
    à System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
    à System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options)
    à WindowsFormsApplication1.Form1.Form1_Load(Object sender, EventArgs e) dans C:\Users\Marc\Documents\Visual Studio 2008\Projects\WebService1\WindowsFormsApplication1\Form1.cs:ligne 56
    à 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.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    InnerException:

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 7
    Par défaut Generic Failure le retour de la revanche qui contre attaque
    Me revoilà avec mon erreur.
    Elle avait disparu, et tout fonctionnait jusqu'à se que je fasse une maj de mon webservice (maj minime qui n'a pas d’influence sur le déroulement du programme, j'ai vérifier), qui a eu pour conséquence de déclencher l'erreur suprême de WMI "Generic Failure".
    Le pire dans tout cela c'est que mon webservice est en place sur deux serveurs différents : l'un sur WS2003 où il tourne nickel et l'autre sur WS2008 R2 et la ça plante lorsque je veux invoquer une méthode de WMI "CreateZone".
    Donc s'il y a quelqu'un qui est déjà passé par là, je suis tout ouïe.

    Sachant qu'il m'est strictement impossible de reboot le serveur pour recharger WMI, comme le propose certains forum

Discussions similaires

  1. espace de nom 'System.Management' introuvable
    Par Elwe31 dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/03/2008, 08h10
  2. problème avec System.management
    Par arabimouh dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 24/05/2007, 16h50
  3. Réponses: 2
    Dernier message: 02/04/2006, 17h03
  4. [doc fr] System Management Server (SMS 2003)
    Par Gabrielly dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 21/02/2006, 12h23

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