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 :

CommunicationObjectFaultedException, comment gérer?


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut CommunicationObjectFaultedException, comment gérer?
    Bonjour,

    Je suis en train d'implémenter un système nécessitant une communication entre deux programmes, un client et un serveur.

    J'utilise pour ça un NamedPipe, basé sur un DuplexChannel.

    Mon serveur se lance comme suit :
    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
    [ServiceBehavior(InstanceContextMode = InstanceContextMode::Single)]
    ref class WCFGraphServer: public IGraphDebugProxy
    {
    	void OnOpen()
    	{
    		try
    		{
    			m_host = gcnew ServiceHost(this, gcnew Uri("net.pipe://localhost/GraphService"));
    			m_host->AddServiceEndpoint("***********.GraphDebug.IGraphDebugProxy", gcnew NetNamedPipeBinding(), "GraphDebugPipe");
    			m_host->Open();
    		}
    		catch (InvalidOperationException ^e)
    		{
    			Console::WriteLine(e->ToString());
    		}
    	}
    }
    Et mon client comme suit :
    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
        [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
        public class Client: IClient
        {
            public void ConnectToServer()
            {
                pipe =
                    new DuplexChannelFactory<IGraphDebugProxy>(
                        this, 
                        new NetNamedPipeBinding(), 
                        new EndpointAddress("net.pipe://localhost/GraphService/GraphDebugPipe"));
    
                Server = pipe.CreateChannel();
            }
    
            public bool IsConnected
            {
                get
                {
                    return !faulted
                        && pipe.State != CommunicationState.Closed
                        && pipe.State != CommunicationState.Faulted;
                }
    
                private set { }
            }
        }
    Côté client, pour vérifier que le client est bien connecté au pipe, j'utilise lq propriété IsConnected.

    Dans l'immédiat, la variable faulted est toujours à false.

    J'obtiens l'exception du titre dans le cas où je tente d'envoyer un message au server sans que celui-ci ne soit connecté.

    Ma question est : comment je peux faire pour déterminer si le serveur est bien présent sur le pipe?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Après quelque test, je me retrouve avec l'exception :
    System.ServiceModel.EndpointNotFoundException : There was no endpoint listening at net.pipe://localhost/GraphService/GraphDebugPipe that could accept the message.
    Donc ma nouvelle question est : comment je peux tester la présence d'un endpoint depuis mon client sans risquer de fermer l'appli?

Discussions similaires

  1. Comment gérer plusieurs langues ?
    Par InterSQL dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/02/2004, 16h12
  2. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 10h49
  3. Comment gérer ma carte réseau en ASM
    Par will1974 dans le forum Assembleur
    Réponses: 6
    Dernier message: 23/09/2003, 17h08
  4. Comment gérer la touche echap ?
    Par Adrael dans le forum C
    Réponses: 28
    Dernier message: 11/07/2003, 13h15
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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