Bonjour,
J'ai créé un service WCF qui fonctionne a merveille, et j'ai voulu ajouter des callback pour remonter les events coté serveur, au client.
Après avoir bouquiné les tutos, j'ai essayer d'appliquer les modifs a mon code mais j'ai un problème lors de ma tentative de connexion coté client.
Voici mon code coté serveur :
Le CallbackContract (projet à part)
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 using System; using System.ServiceModel; using CIATControl.Contracts; namespace CIATControl.BusinessLayer { [ServiceContract (CallbackContract = typeof(IBusinessCallBack))] interface IAirControlService { [OperationContract] void Uta_SubscribeValues(int utaId); [OperationContract] void Uta_UnSubscribeValues(int utaId); } }
La classe issue du CallBackContract coté client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 using System.ServiceModel; using CIATControl.Common; namespace CIATControl.Contracts { public interface IBusinessCallBack { [OperationContract(IsOneWay = true)] void OnAirControlValuesChanged(Enum_AirControlVariables variable, object objValue); } }
La connexion du client :
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 System; using CIATControl.Common; namespace CIATControl.EasyGUI { public class ContractAccess : CIATControl.Contracts.IBusinessCallBack { public delegate void UTAValuesChanged(Enum_AirControlVariables variable, object objValue); public event UTAValuesChanged OnUTAValuesChanged; public ContractAccess() { } public void OnAirControlValuesChanged(Enum_AirControlVariables variable, object objValue) { OnUTAValuesChanged(variable, objValue); } } }
Lorsque j'arrive sur la fonction Open, j'ai l'exception suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 InstanceContext context = new InstanceContext(new ContractAccess()); utaClient = new AirControlServiceClient(context); utaClient.Open();
Cette erreur se produit d’abord lors de l’instanciation de "utaClient", et plus précisément dans sont paramètre InnerChannel.InstanceContext fourni à ChannelFactory contient un UserObject qui n'implémente pas CallbackContractType 'CIATControl.EasyGUI.ServiceRefWCF.IAirControlServiceCallback'.
Avant que j'ajoute le CallBack tout marchais bien, il doit y avoir quelque chose que je fais mal, mais je n'arrive pas trouver ce que c'est.
J'ai bien remis à jour mon "service references" du client.
Si quelqu'un a une piste, merci.
Partager