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 :
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 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); } }
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 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; } } }
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
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; } } ... } }
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.
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>
Merci d'avance
Partager