Bonjour,

j'essaye de me mettre au WCF en suivant ce tuto : introduction à WCF, cependant rien ne marche comme je le souhaiterais, mais je pense que je m'y prend mal (comme d'habitude )

dans mon cas, je dois créer une application qui effectue des requêtes, compte le nb de requêtes à effectuer et le nb déjà effectués, et envoie ces valeurs à une autre application. (la première application sera un service windows et la deuxième en WPF, mais pour le moment je fait des tests avec 2 applis consoles.)

J'ai crée un projet de type "bibliothèque du service WCF" qui contient 2 fichiers :
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
 
[ServiceContract]
    public interface ISyncProcess
    {
        [OperationContract]
        List<SyncProcess> GetProcessList();
    }
 
    [DataContract]
    public class SyncProcess
    {
        [DataMember]
        public string Name { get; protected set; }
 
        [DataMember]
        public int SyncDone { get; protected set; }
 
        [DataMember]
        public int SyncTotal { get; protected set; }
    }
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
51
52
53
54
55
56
57
58
 
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
    public class SyncProcessServer : ISyncProcess
    {
        private List<SyncProcess> processList;
        private Timer t;
        private static SyncProcessServer instance = null;
 
        public static SyncProcessServer GetInstance()
        {
            if (instance == null)
                instance = new SyncProcessServer();
 
            return instance;
        }
 
        private SyncProcessServer()
        {
            processList = new List<SyncProcess>();
            processList.Add(new SyncProcessUnit("module de test 1", 50));
            processList.Add(new SyncProcessUnit("module de test 2", 10));
 
            t = new Timer(1000);
            t.Enabled = true;
            t.Elapsed += new ElapsedEventHandler(t_Elapsed);
        }
 
        static void t_Elapsed(object sender, ElapsedEventArgs e)
        {
            foreach (SyncProcessUnit p in SyncProcessServer.GetInstance().processList)
            {
                p.Tick();
            }
        }
 
        public List<SyncProcess> GetProcessList()
        {
            return processList;
        }
    }
 
    public class SyncProcessUnit : SyncProcess
    {
        public SyncProcessUnit(string _name, Classification _class, int _total)
        {
            Name = _name;
            SyncTotal = _total;
            SyncDone = 0;
        }
 
        public void Tick()
        {
            if (SyncDone < SyncTotal)
                SyncDone++;
            else
                SyncDone = 0;
        }
    }
(le Timer me permet de remplacer les requêtes pendant les tests)

une 2ème application qui contient uniquement le code suivant: (lle contient une référence vers System.ServiceModel et une vers la librairie crée ci-dessus)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
class Program
    {
        static void Main(string[] args)
        {
            ServiceHost h = new ServiceHost(SyncProcessServer.GetInstance());
            h.Open();
        }
    }
même si je n'ai pas encore codé la partie cliente, normalement je devrais pouvoir exécuter la 2ème application (cela devrait démarrer l'instance de SyncProcessServer et effectuer des "Ticks()" en permanence).

Au final, j'ai ce message sur la ligne Le service « MyLibrary.SyncProcessServer » ne possède aucun point de terminaison d’application (non infrastructure). Cela peut être dû au fait qu’aucun fichier de configuration n’a été trouvé pour votre application, qu’aucun élément de service correspondant au nom du service n’a été trouvé dans le fichier de configuration ou qu’aucun point de terminaison n’a été défini dans l’élément de service.

Comment résoudre ça?

merci d'avance