Bonjour,
Je suis en train de tester la communication entre une application console et un client silverlight.
A terme, je voudrais intégrer le code de mon appli console dans un service window.
J'ai suivi l'article Msdn sur la création d'un client Silverlight(http://207.46.16.248/fr-fr/library/cc197940(VS.95).aspx) et tout a bien fonctionné.
J'ai donc créé une appli console qui lance mon service WCF et un client Silverlight.
Le client et le service se lancent mais ils ne communiquent pas et je n'ai pas de message d'erreur.
J'ai mis dans mon dossier de l'appli console les fichiers clientaccesspolicy.xml et crossdomain.xml.
Si vous pouviez me dire ou j'ai pu faire une erreur?
Merci.
Voici le code de mon application console :
voici le app.config
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ServiceHost proxy = new ServiceHost(typeof(OrderService)); proxy.Open(); Console.WriteLine("enter to stop."); Console.ReadLine(); proxy.Close();
et voici le code de mon 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 <configuration> <system.serviceModel> <!-- Register the binding extension from the SDK. --> <extensions> <bindingExtensions> <add name="pollingDuplexHttpBinding" type="System.ServiceModel.Configuration.PollingDuplexHttpBindingCollectionElement, System.ServiceModel.PollingDuplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </bindingExtensions> </extensions> <!-- Create the polling duplex binding. --> <bindings> <pollingDuplexHttpBinding> <binding name="multipleMessagesPerPollPollingDuplexHttpBinding" duplexMode="MultipleMessagesPerPoll" maxOutputDelay="00:00:07"/> </pollingDuplexHttpBinding> </bindings> <services> <service name="DuplexService.OrderService"> <!-- Service Endpoints --> <endpoint address="" binding="pollingDuplexHttpBinding" bindingConfiguration="multipleMessagesPerPollPollingDuplexHttpBinding" contract="DuplexService.IDuplexService"> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="http://localhost:2830/Service1.svc"/> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> <system.diagnostics> <trace autoflush="true" /> <sources> <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> <listeners> <add name="sdt" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "e:\SdrConfigExample.log" /> </listeners> </source> </sources> </system.diagnostics> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
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 public MainPage() { InitializeComponent(); EndpointAddress address = new EndpointAddress("http://localhost:2830/Service1.svc"); PollingDuplexHttpBinding binding = new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll); DuplexServiceClient proxy = new DuplexServiceClient(binding, address); proxy.ReceiveReceived += new EventHandler<ReceiveReceivedEventArgs>(proxy_ReceiveReceived); proxy.OrderAsync("Widget", 3); reply.Text = "Sent order of 3 Widgets." + Environment.NewLine; } void proxy_ReceiveReceived(object sender, ReceiveReceivedEventArgs e) { if (e.Error == null) { reply.Text += "Service reports Widget order is " + e.order.Status + "." + Environment.NewLine; if (e.order.Status == OrderStatus.Completed) { reply.Text += "Here is the completed order:" + Environment.NewLine; foreach (string order in e.order.Payload) { reply.Text += order + Environment.NewLine; } } } }
Partager