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 :

WCF - Problème avec les DataContract


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 12
    Points
    12
    Par défaut WCF - Problème avec les DataContract
    Bonjour à tous,

    J'ai commencé à développé une application WCF intégré à un service windows. Les problèmes ont commencés à apparaître au moment où j'ai rajouté une fonction renvoyant non pas un type natif de .NET mais une classe.

    J'ai bien rajouté les attributs [DataContract] et [DataMember] à la définition de la classe en question mais j'ai toujours le problème : le service windows (qui contient le WCF) ne veut pas se lancer, problème résolut si la fonction renvoit un type natif .NET.

    Le problème est que puisque c'est un service windows je n'ai pas de détail précis concernant le pourquoi de l'échec du démarrage. Toujours est-il que c'est en rapport avec la classe renvoyée par un fonction.

    L'interface :
    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
     
    using System;
    using System.Collections.Generic;
    using System.ServiceModel;
    using System.Text;
     
    namespace OphaliaSrv
    {
        [ServiceContract()]
        public interface IServeur
        {
            [OperationContract()]
            GeneralUser newUser(string account, string pass);
        }
    }
    Une partie de la classe qui implémente l'interface
    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
     
    using Npgsql;
    using System;
    using System.Collections.Generic;
    using System.ServiceModel;
    using System.Text;
     
    namespace OphaliaSrv
    {
        [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single, IncludeExceptionDetailInFaults = true)]   
        class Serveur : IServeur
        {
    ...
     
            public GeneralUser newUser(string account, string pass)
            {
                GeneralUser User = null;
     
    ...
     
                return User;
            }
        }
    }
    La classe qui pose problème : (une partie seulement)
    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
     
    using System;
    using System.Collections.Generic;
    using System.Runtime.Serialization;
    using System.Text;
     
    namespace OphaliaSrv
    {
        [DataContract]
        public class GeneralUser
        {
            private int id_user;
    ...
     
            public GeneralUser(int id_user, string username, string password, string email, bool admin, string langue, string theme, Int16 corporation, Int64 wallet, Int16 race, bool validate)
            {
    ...
            }
     
            [DataMember]
            public int pId_user
            {
                get
                {
                    return id_user;
                }
            }
     
    ...
        }
    }
    Et le fichier de config de l'application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    	<system.serviceModel>
    		<services>
    			<service name="OphaliaSrv.Serveur">
    				<endpoint address="net.tcp://localhost:8000/OphaliaSrv" binding="netTcpBinding" contract="OphaliaSrv.IServeur" />
    			</service>
    	  </services>
    	</system.serviceModel>
    </configuration>
    J'ai essayé diverses solutions trouvées en parcourant le net ou diverses sources comme rajouté l'attribut Namespace à [DataContract] ou [ServiceContract] mais le problème est toujours présent.

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    C'est pas difficile d'avoir des erreurs au premier lancement d'un service avec WCF

    Je t'encourage déjà à hoster ton service WCF dans une console. C'est vraiment plus simple pour faire des tests, et en plus, tu auras l'erreur directement.

    Sinon, tu peux faire un try / catch au niveau de ton service NT, et logger dans l'EventLog toutes les exceptions que tu reçois. Tu n'auras plus qu'à aller voir dans l'EventViewer ce qui s'est passé.

    En plus, tu as bien spécifié IncludeExceptionDetailInFaults alors tu auras vraiment le détail de l'erreur, aucun souci WCF n'est pas du genre à cacher ses petits problèmes, il est justement plutôt verbeux.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Merci ... j'aurai du faire ça depuis le début

    Donc visiblement dans une propriété précédée de [DataMember], la partie set n'est pas facultative ... donc voilà ça marche bien ...

    Merci pour l'indice

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    Je m'étais justement posé la question, je voyais pas ton set... et de toute façon à la génération du proxy niveau client il aurait tout créé. Mais bon WCF veut que ça soit clair et net, ce qui est plutôt positif finalement, car ainsi il n'y a pas de différence au niveau des accesseurs du datacontract entre le client et le service.

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

Discussions similaires

  1. WCF problème avec les time (datetime)
    Par mkl238 dans le forum C#
    Réponses: 6
    Dernier message: 13/09/2013, 16h41
  2. Réponses: 6
    Dernier message: 04/08/2010, 15h21
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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