Bonsoir à tous,
J'ai actuellement un problème concernant un UserControl que j'essaie de tester dans une application WPF. Une erreur de EndPoint introuvable
Pour commencer, j'héberge un service WCF dans un service Windows.
J'ai réalisé un client quelconque qui accède à ce WCF, il contient la référence vers ce service et un fichier App.config :
Code xml : 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 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IMyWcfService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost:25000/service/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyWcfService" contract="ReferenceWcfServiceDistant.IMyWcfService" name="BasicHttpBinding_IMyWcfService" /> </client> </system.serviceModel> </configuration>
Le client fonctionne parfaitement, j'arrive à accéder aux différentes méthodes qu'il me propose. Il me suffit d'instancier un nouveau client et ça fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReferenceWcfServiceDistant.MyWcfServiceClient cli = new ReferenceWcfServiceDistant.MyWcfServiceClient();
Venons en au fait.
J'ai réalisé un petit WPF UserControl qui se charge d'accéder à ce Service.
Je lui ai donc ajouté une référence de service et il m'a construit un fichier app.config qui est le suivant :
Code xml : 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 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IMyWcfService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost:25000/service/" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMyWcfService" contract="MaReferenceWebService.IMyWcfService" name="BasicHttpBinding_IMyWcfService" /> </client> </system.serviceModel> </configuration>
Il ne me donne aucune erreur à la compilation.
Je crée donc une application WPF de test qui contient ce UserControl. Pour cela j'intègre tout simplement mon UserControl de la manière suivante :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <Window x:Class="TEST.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:UC="clr-namespace:WPFPL;assembly=WPFPL" Title="MainWindow" Height="350" Width="525"> <Grid> <UC:ControleWPF Margin="12,12,236,182" /> </Grid> </Window>
Mais là il me met une erreur, mon Controle contient une CROIX et me donne le code d'erreur suivant :
Impossible de trouver un élément*de point de terminaison par défaut qui fait référence au contrat 'MaReferenceWebService.IMyWcfService' dans la section de configuration du client ServiceModel. Ceci peut être dû au fait que le fichier de configuration de votre application est introuvable ou que l'élément de point de terminaison correspondant à ce contrat est introuvable dans l'élément client.
à System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
à System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
à System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
à System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
à System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
à System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
à System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
à System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
à System.ServiceModel.ClientBase`1..ctor()
à WPFPL.MaReferenceWebService.MyWcfServiceClient..ctor() dans C:\Users\Patrick\Desktop\Ecole\C#\Projets\Solution3\WPFPL\Service References\MaReferenceWebService\Reference.cs:ligne 257
à WPFPL.ControleWPF..ctor() dans C:\Users\Patrick\Desktop\Ecole\C#\Projets\Solution3\WPFPL\ControleWPF.xaml.cs:ligne 28
Le UserControl ne veut bien s'afficher que si je supprime de mon UserControl lui même l'instanciation de la référence client :
Dans ce cas l'application WPF voudra bien se lancer sans aucune erreur mais je n'aurai pas accès à mon service.. Ce qui perd son intérêt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ServiceWCF = new MaReferenceWebService.MyWcfServiceClient();
En gros, je récapitule vite fait :
J'ai une application WPF qui utilise un contrôle utilisateur qui, lui, fait référence à un service. Ce service est hébergé dans un service Windows.
J'arrive à accéder à mon service lorsque je suis dans un projet dans la même solution par exemple, donc il fonctionne. Le problème viendrait apparemment du userControl lorsqu'il instancie la référence.
J'ai parcouru des dizaines de forums et cela fait 2jours que je butte là dessus...
Merci à ceux qui ont eu le courage de lire mon long poste.
Joyeux Noël à vous
EDIT: J'ai lu quelque part que copier le contenu d'un app.config d'un autre client pourrait résoudre le problème, j'ai donc créé un app.config dans mon application WPF et y ai copié le contenu du <system.serviceModel> du UserControl... Mais cela ne donne rien, ai-je fais une mauvaise manip ?
Je ne suis pas sûr que la solution soit correcte, en avez-vous d'autres ?
Partager