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 :

Recupérer une List<T>


Sujet :

Services Web

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Par défaut Recupérer une List<T>
    Bonjour j'utilise dans mon service web pour récupérer une liste or cette methode leve une exception dans mon appli cliente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     [WebMethod]
        [XmlInclude(typeof(List<User>))]
        public List<User> GetUsers()
        {
           return userList;
        }
    dès que j'instantie mon service web
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyService ms = new MyService();
    J'obtient cette erreur
    "InvalidOperationException : To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of thier inheritance hierarchy"

    j'ai essayé d'implementé IEnumerable mais elle ne contient pas de methode Add. Auriez vous une idée pour résoudre ce probleme?
    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Par défaut
    Bon j'ai essayé plusieurs méthode mais elle reste infructueuses

    Je vais essayé d'être plus explicite dans mon post
    Je souhaite recevoir une List<T> de mon service web vers mon service (app cliente)

    T étant ma classe User
    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
     
    using System;
    using System.Web;
    using System.Data;
    using System.Collections;
    using System.Collections.Generic;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml;
     
    namespace bc
    {
     
    [Serializable]
    public class User
    {
        private string name;
     
        public User()
        {
     
        }
     
        public User(string _name)
        {
            this.name = _name;
        }
     
        public string Name
        {
            get { return name; }
        }
     
     
    }
    }
    voici mon service web

    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
     
    using System;
    using System.Web;
    using System.Data;
    using System.Linq;
    using System.Collections;
    using System.Collections.Generic;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml;
    using System.Xml.Serialization;
     
     
    namespace bc
    {
     
    [WebService(Namespace = "http://www.bc.net/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class MyService : System.Web.Services.WebService , IEnumerable<User>, IEnumerator<User>
    {
        static protected List<User> arrUsers = new List<User>();
     
     
        public MyService()
        {
            //InitializeComponent();        
        }
     
     
     
     
     
        [WebMethod]
        public Room[] GetUsers()
        {
     
            return arrUsers.ToArray();
        }
     
        [WebMethod]
        public void CreateUser(string userName)
        {
            User user = new User(userName);
            arrUsers.Add(user);
        }
     
     
     
    }
    }
    Sur mon appli client l'exception cité dans mon premier post est levée dès je j'instancie mon service web

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyService ms = new MyService();
    Voilou j'espere avoir été plus explicite
    Merci

  3. #3
    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 bakman Voir le message
    Bon j'ai essayé plusieurs méthode mais elle reste infructueuses

    Je vais essayé d'être plus explicite dans mon post
    Je souhaite recevoir une List<T> de mon service web vers mon service (app cliente)
    La List est un concept spécifique à .Net, par voie de conséquence étranger à Soap qui ne connais que des "array", pour des questions d'interopérabilité.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Par défaut
    Merci pour ta réponse

  5. #5
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    Sinon, côté client, tu peux définir dans le proxy généré par visual studio quel type de collection il doit te générer... (si tu utilises la génération de proxy, ce qui est le case je suppose)

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 270
    Par défaut
    Je vais matter ca
    Merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/05/2009, 15h06
  2. [OL-2003] recupérer une liste de mail ?
    Par deuval dans le forum Outlook
    Réponses: 7
    Dernier message: 27/04/2009, 15h52
  3. recupérer une liste de paramètres.
    Par fafarun dans le forum Linux
    Réponses: 2
    Dernier message: 14/10/2007, 12h39
  4. [Ajax] Recupérer la valeur d'une liste
    Par Kaimann dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/02/2006, 18h22
  5. [debutant] recupérer contenu d'une liste
    Par Silvia12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/01/2006, 18h41

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