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 :

NetNamedPipe-BasicHttp : comportement différent


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut NetNamedPipe-BasicHttp : comportement différent
    Bonjour à tous,

    Avec un même code, juste en changeant le type de binding, j'obtiens des comportement différents.

    Soit le code suivant :

    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 (ChannelFactory<IPackageSendingSupervisor> channelFactory = new ChannelFactory<IPackageSendingSupervisor>(ConfigurationManager.AppSettings["PackageSendingSupervisorEndPoint"]))
    {
      IPackageSendingSupervisor packageSendingSupervisor = channelFactory.CreateChannel();
     
      foreach (int package in packages)
      {
        try
        {
          packageSendingSupervisor.RestartSending(package);
          Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.PackageRestarted, package));
        }
        catch (Exception e)
        {
          Console.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.RestartPackageError, package, e.Message));
        }
      }
    }
    Avec deux éléments dans packages, voici ce que j'obtiens en BasicHttp :

    boucle 1 -> catch d'une exception renvoyé par le serveur WCF (c'est voulu, c'est justement ce que je veux tester)
    boucle 2 -> ok

    avec NetNamedPipe

    boucle 1 -> catch d'une exception renvoyé par le serveur WCF (c'est voulu, c'est justement ce que je veux tester)
    boucle 2 -> catch d'une CommunicationObjectFaultedException (Message="The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.")

    pourtant channelFactory.State est égal à "Opened" quand je rentre dans le catch de la seconde boucle.

    Comment me conseillez-vous de coder l'appel pour que le comportement soit identique avec les 2 types de binding sans risquer d'y perdre des ressources.

    Par avance, merci pour votre aide,
    Tetranos

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Si tu veux transmettre des exceptions à traver WCF, fais les dériver de FaultException, sinon cela te plantera ton canal !

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    Re-bonjour...

    Désolé de répondre si tard.
    J'ai essayé de faire ma propre exception en dérivant de FaultException et je constate que côté client on reçoit toujours une FaultException et non la dérivé. Je suppose que WCF trappe pour nous toutes les exceptions et les remappe en FaultException.
    Du coup, je pense que la solution que tu proposes ne résoudra pas mon pb.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Utilise le mot clé IS, c'est logique que le système ne fournisse en traitement qu'une FaultException, afin que tout cela reste générique...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try
    {
    ...
    }
    catch(FaultException ex)
    {
       if(ex is MyCustomFaultException)
       {  /* OK Traitement */ }
    }

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    euh joker...dans mon test j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    try
    {
    ...
    }
    catch(MyCustomFaultException ex1)
    {
       // ça passe pas là
    }
    catch(FaultException ex2)
    {
       // mais ça passe là
    }
    je doute que le is fasse mieux que le catch...

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Si tu doutes, alors teste, être sûr ya rien de mieux

Discussions similaires

  1. [CKEditor] Comportement différent en ligne
    Par guy2004 dans le forum Bibliothèques & Frameworks
    Réponses: 6
    Dernier message: 14/12/2005, 16h11
  2. Comportement différent entre un bouton et une image
    Par MicheMTP13 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 07/11/2005, 08h47
  3. Comportement différent des listes [] et des tuples () ??
    Par JujuKéblo dans le forum Général Python
    Réponses: 2
    Dernier message: 12/10/2005, 09h08
  4. [C#] bouton avec 2 comportements différents ?
    Par st0j dans le forum ASP.NET
    Réponses: 8
    Dernier message: 31/05/2005, 09h50
  5. Réponses: 3
    Dernier message: 16/03/2005, 11h31

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