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 :

Utilisation des CallBack


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Par défaut Utilisation des CallBack
    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 :

    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);
        }
    }
    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
    using System.ServiceModel;
    using CIATControl.Common;
     
    namespace CIATControl.Contracts
    {
        public interface IBusinessCallBack
        {
            [OperationContract(IsOneWay = true)]
            void OnAirControlValuesChanged(Enum_AirControlVariables variable, object objValue);
         }
    }
    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
    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);
            }
     
        }
    }
    La connexion du client :
    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();
    Lorsque j'arrive sur la fonction Open, j'ai l'exception suivante :
    InstanceContext fourni à ChannelFactory contient un UserObject qui n'implémente pas CallbackContractType 'CIATControl.EasyGUI.ServiceRefWCF.IAirControlServiceCallback'.
    Cette erreur se produit d’abord lors de l’instanciation de "utaClient", et plus précisément dans sont paramètre InnerChannel.

    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.

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Par défaut
    Je n'ai toujours pas trouvé la raison de mon problème.
    Par contre j'ai refais un projet plus simple, juste sur la partie WCF avec le même problème (cela m'évite de passer mon projet actuel qui est très volumineux).

    Voici le lien pour télécharger le projet : Sources

    Si vous pouvez y jeter un coup d'oeil.

    Voici le lien ou j'ai trouver un exemple qui correspond a ce que je veux faire : http://www.lelibre.net/index.php?pos...-un-webservice

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Par défaut
    Le problème venait de la Class ContractAccess, il fallait écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public class ContractAccess : ServiceRefWCF.IAirControlServiceCallback
        {
    ça fonctionne tout de suite mieux

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

Discussions similaires

  1. [PR-2010] Utilisation des callbacks dans un ruban personnalisé
    Par dumas.blr dans le forum VBA Project
    Réponses: 0
    Dernier message: 26/07/2013, 16h31
  2. Utilisation des callbacks
    Par ecgbuilder dans le forum Scilab
    Réponses: 1
    Dernier message: 19/04/2011, 10h42
  3. problème d'utilisation des callbacks
    Par wnxbcv dans le forum Interfaces Graphiques
    Réponses: 12
    Dernier message: 28/08/2009, 15h21
  4. Utilisation des callBack
    Par Bily.sdi dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/04/2008, 13h02
  5. [amfphp] utilisation des callback
    Par luta dans le forum Dynamique
    Réponses: 2
    Dernier message: 28/09/2006, 10h02

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