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

Silverlight Discussion :

probleme service wcf et renvoi de list<objet>


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Par défaut probleme service wcf et renvoi de list<objet>
    Bonjour,


    j'un service WCF qui doit me renvoyer une liste d'objet.
    si je cré une list<objet> et que je met des objet de type toto, je vois que la liste est bien une liste d'objet toto (lors du debug), cependant une erreur survient lors du return de mon service...
    erreur :
    Le serveur distant a retourné une erreur : NotFound.
    cette erreur n'apparait pas lorsque si la liste créée est une list<toto>

    (ce fonctionnement marche bien coté client, mais pas coté servuer où j'ai mes service wcf) comment faire?? il m'est interessant voir indispensable d'avoir des objet sans type dans mon service puisque les type varie en fonction de l'appel du service.

    je vous remercie.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Un Not Found vient en général d'une erreur de communication. Regarde avec Fiddler pour voir le code retourné par ton service et si il te donne une exception.

    Mieux tu peux également lancer un debug sur ton service WCF et voir si tu arrives bien au return. Regarde également si tu n'as pas un problème de cross domain.

  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
    Bonjour

    Quand tu utilises une méthode WCF qui retourne une liste d'objet de type T et que les instances contenues dans la liste peuvent être d'un type dérivé de T, tu dois préciser au niveau de la classe d'implémentation de l'interface de contrat le type de chaque objet susceptible d'être retourné via l'attribut [KnownType].

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Par défaut
    tout d'abord merci pour vos réponses !!!

    skyounet, en effet j'arriv bien jusqu'au return. et c'est au moment de l'envoi au client (je pense) que sa 'saute'.
    je m'explique :
    si au lieu de mettre ma list<objet> je retourne directement une list<toto> la sa marche nikel mais je veux des objets non typés.... quand j'utilise ma list<objet> qui contient des toto, au moment du return quand je watch ma liste je vois bien mes objet toto dans la liste mais apres sa saute

    as tu un liens pour que je regarde pour le cross domain ? je vois pas de quoi tu parle.

    bluedeep :j'ai pas compris l'histoire du knowtype. comment et où faut il gérer ça ?

  5. #5
    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 livinho38 Voir le message
    bluedeep :j'ai pas compris l'histoire du knowtype. comment et où faut il gérer ça ?
    Comme attribut de classe de l'implémentatioon du contrat WCF, par exemple.

    Ou dans la définition de ton contrat de message.

    Dès l'instant où tu veux manipuler via WCF des objets de type hérités d'un type prescrit dans un contrat, tu dois spécifier de manière extensive les différents types susceptibles d'être utilisés.

    Exemple :

    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
     
     
    [DataContract]
    [KnownType(typeof(Area))]
    [KnownType(typeof(Center))]
    [KnownType(typeof(District))]
    public class SearchCostCenterRequest 
    {
      public UOBase UOBase
      {
        get
        {
          return _uoBase;
        }
        set
        {
          _uoBase = value;
        }
      }
    // .....
    }
    Ici la propriété UOBASE du DataContract SearchCostCenterRequest peut retourner une instance de type Area, Center, ou District. On le précise via les KnownTypeAttribute. Sinon, la serialisation WCF part en sucette.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Par défaut
    voici un exemple de comment je fonctionne :

    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
      public Customer serviceCustomer() {
     
                Customer customer1 = new Customer();
                customer1.name = "monnom";
                customer1.sexe = true;
     
                String t1 = "t1";
                String t2 = "t2";
     
                customer1.detailsList.Add(t1);
                customer1.detailsList.Add(t2);
     
               Toto dto = new Toto();
               customer1.detailsList.Add(dto);
     
                return customer1;
            }
    avec ma classe customer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Customer 
        {
            public Customer()
            {
                this.detailsList = new  List<object>();
            }
            public string name {get;set;}
            public bool sexe {get; set;}
            public List<object> detailsList{ get; set; }
     
     
        }
    on voit ici que j'ai une list<objet> et que dedans je met des objet typé. (ceci peu se faire au niveau du service ou dans une autre classe.)
    à quel niveau dois-je mettre les knowtype?

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

Discussions similaires

  1. Probleme de connection au service WCF
    Par Seth77 dans le forum Windows Communication Foundation
    Réponses: 7
    Dernier message: 28/06/2012, 18h18
  2. Réponses: 8
    Dernier message: 05/05/2011, 13h44
  3. probleme acces a un service WCF
    Par bellak dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 27/10/2010, 11h23
  4. Réponses: 5
    Dernier message: 30/08/2010, 10h55
  5. probleme avec service wcf
    Par tchitchimon dans le forum Silverlight
    Réponses: 4
    Dernier message: 18/07/2008, 16h21

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