Bonjour à tous,
Avec un même code, juste en changeant le type de binding, j'obtiens des comportement différents.
Soit le code suivant :
Avec deux éléments dans packages, voici ce que j'obtiens en BasicHttp :
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)); } } }
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
Partager