Bonjour,
Je suis entrain de développer ma première appli WCF et je galère un peu.
Mon client et mon serveur se connecte via des proxy dynamiques afin de pouvoir déployer facilement sur plusieurs réseau mon application.
Voici le code de mon serveur:
Ma classe configuration contient :
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
27
28
29
30
31
32 Server singleServerInstance = new Server(); Chargement.ChargerInformations(); Uri baseUri = new Uri(Configuration.CreateServerUriString()); ServiceHost serviceHost = new ServiceHost(singleServerInstance, baseUri); try { Binding sharedBinding = Configuration.CreateBinding(); serviceHost.AddServiceEndpoint(typeof(IConnexion), sharedBinding, baseUri); serviceHost.Open(); Console.WriteLine("Le serveur est lancé"); Console.WriteLine("Appuyez sur la touche 'Entrée' pour arreter le serveur."); Console.WriteLine(); Console.ReadLine(); serviceHost.Close(); } catch (CommunicationException ex) { Console.WriteLine("Oops! Exception: {0}", ex.Message); try { serviceHost.Abort(); } catch { } Console.WriteLine("Appuyez sur la touche 'Entrée' pour arreter le serveur."); Console.WriteLine(); Console.ReadLine(); }
Coté client je fais une requete de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 //TODO : Il faut aller chercher la configuration public static string CreateServerUriString() { return "http://localhost:1471"; } public static Binding CreateBinding() { return new WSDualHttpBinding(); }
Je pense que ça marche, j'arrive à avoir un retour du serveur. Cependant, j'ai remarqué que dès que je lance skype en parallèle de mes tests j'ai l'erreur suivante :
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
27 public static void initialiserApplication() { Configuration.binding = Configuration.CreateBinding(); Configuration.endpointAddress = new EndpointAddress(Configuration.CreateServerUriString()); } public static Utilisateur Connexion(string login, string mdp) { try { ChannelFactory<IConnexion> channelFactory = new ChannelFactory<IConnexion>(Configuration.binding, Configuration.endpointAddress); IConnexion messageSender = channelFactory.CreateChannel(Configuration.endpointAddress); Utilisateur retour = messageSender.Connexion(login, mdp); ((IChannel)messageSender).Close(); return retour; } catch (Exception erreur) { calculs.Erreur("Probleme dans le Service de Connexion au serveur," + erreur.Message); return null; } }
Du coup c'est un peu limite si mon appli ne peut fonctionner que si elle est seule sur le PC. Comment gérer cette erreur ?
EDIT: Visiblement en utilisant NetTcpBinding ça fonctionne meme avec Skype, mais pourquoi avec l'autre ça ne fonctionne pas alors que je précise bien le numéro de port ?
Merci d'avance
Partager