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

Windows Communication Foundation .NET Discussion :

Problème pour consommer un service avec une liste ou un objet [Débutant]


Sujet :

Windows Communication Foundation .NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Points : 35
    Points
    35
    Par défaut Problème pour consommer un service avec une liste ou un objet
    Bonjour à vous,

    J'ai un problème qui doit être simple a résoudre pour vous, je suis débutant c'est mon premier projet avec WCF.

    alors c'est un projet azur avec de l'ASP .NET, du WCF, et un edmx.

    rentrons dans le coeur du problème :

    Ma méthode dans mon Service1.svc
    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
     
      public user GetUser()
            {
                using (Model1Container context = new Model1Container())
                {
                    List<user> query = (from userJeu in context.userJeu select userJeu).ToList();
     
                    user poney = new user();
                    poney.ID= 1;
                    poney.nom = "sefsef";
                    poney.pass = "sefsef";
                    poney.prenom = "sefsef";
                    poney.pseudo = "sefsef";
                    poney.email = "sefsef@zedez.fr";
                    poney.adminlvl = 1;
     
                    foreach (user item in query)
                    {
                        poney = item;
                    }
                    return poney;
                }
            }

    alors vous devez vous demander pourquoi j'écrase mon user, en faite si je commente le foreach ça fonctionne très bien lorsque je consomme mon objet coté ASP.Net

    Par contre à partir du moment ou le user est écrasé dans le foreach voila l'erreur :

    Détails de l'exception: System.Net.WebException: La connexion sous-jacente a été fermée : La connexion a été interrompue de manière inattendue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Erreur source:
     
    Ligne 144 :        
    Ligne 145 :        public DAL.user GetUser() {
    Ligne 146 :            return base.Channel.GetUser();
    Ligne 147 :        }
    Ligne 148 :

    Fichier source : C:\Users\scude\documents\visual studio 2010\Projects\AzurePoneyBlog\MvcWebRole1\Service References\ServiceReference1\Reference.cs Ligne : 146
    Avec un point d’arrêt je ne vois pas de problème, le user est correct.

    Autre point j'ai fait un foreach car je ne sais pas comment sortir un objet d'une liste mais ça c'est un autre problème.

    Merci à vous de m'aider sur ce point !

  2. #2
    Invité
    Invité(e)
    Par défaut


    La logique que tu suis pour écraser la variable poney n'est pas, en plus de ne pas être une bonne pratique, bonne pour les performances. Ta variable poney ne récupérant que le dernier user de ta requête query alors autant modifier la requête et récupérer juste le dernier user.

    Pour en revenir à ton problème, il me semble que ton problème provient du fait que lors de la sérialisation, WCF essaie de charger les propriétés de navigation dû à l'activation par défaut du chargement à la demande alors que la connexion est déjà fermée.
    T'as deux solution :
    1. Charger toutes les propriétés de navigation via ta requête en utilisant la méthode Include sur ton ObjectQuery.
    2. Désactiver le chargement à la demande (lazy loading) en faisant context.ContextOptions.LazyLoadingEnabled = false;


    Je te conseille d'utiliser la 2ème méthode.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    ça fonctionne !

    Un grand merci, oui je sais que mon foreach est un viol cérébral il faut que je mette la main sur mon livre C# LinQ, c'était juste pour tester sachant qu'il me manque des bases comme je l'ai expliqué brièvement en bas de mon premier post.

    Par contre comment fonctionne la sérialisation j'ai partiellement compris le fond du problème et même si ça fonctionne j'aime comprendre.

    En tout cas merci à toi !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bah c'est fait dans mon premier post :
    ... ton problème provient du fait que lors de la sérialisation, WCF essaie de charger les propriétés de navigation dû à l'activation par défaut du chargement à la demande alors que la connexion est déjà fermée.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Points : 35
    Points
    35
    Par défaut
    Oui mais je débute il faut que je fouille sur la sérialisation pour mieux comprendre le mécanisme en détail.

    En tout cas merci maintenant que je suis débloqué j'avance bien

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/10/2013, 15h44
  2. Réponses: 1
    Dernier message: 08/05/2008, 23h00
  3. Réponses: 12
    Dernier message: 04/03/2007, 11h43
  4. Problème pour charger un set avec une clé étrangère
    Par sylvainv18 dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/11/2006, 18h08
  5. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21

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