none
Consommer un service WCF avec Metro xaml RRS feed

  • Question

  • Bonjour à tous !

    J'ai besoin de communiquer avec un service WCF depuis une application METRO C# xaml.

    Le problème que je rencontre est que je n'ai pas d'autres choix visiblement que de récupérer mes méthodes en asynchrone, le problème est que je suis débutant dans le domaine du .net et c'est la première fois que j'utilise Metro.

    Donc j'ai tenté de l'utilisé toute la journée mais je n'y comprend rien...

    Je veux juste récupérer un objet, une liste d'objet même une chaine de caractère depuis mon service WCF, mais impossible ... Je me demande même si je ne dois pas refaire tout mon wcf ??

    En fait je cherche simplement à faire ceci :

    Service1Client wcf = new Service1Client();
    List<menu> menus = wcf.getListMenu>;

    Pour le moment j'ai essayé de rajouter await, ce qui m'a obligé à créer une méthode asynchrone, puis à utiliser les méthodes getListMenuRequest et getistMenuResponse dans cette méthode, seulement il me demande de retourner un type Task<List<menu>> et je ne sais pas l'utiliser.

    Quand je tente tout de même d'utiliser cette méthode il me répond qu'il n'y a pas de endpoint correspondant a la méthode getListMenuRequest ...

    Enfin voila j'ai bien l'impression d'être loin du but.

    bref si quelqu'un a une idée sur la question ça me remontera le morale

    Il me reste 2 jours pour finir ça et je bloque complet là dessus ...

    Merci à vous !

    • Déplacé Florin Ciuca vendredi 7 septembre 2012 10:55 (Origine :Développement d’applications de style Metro pour Windows 8)
    mercredi 13 juin 2012 20:32

Réponses

  • Comprends pas : dans l'interface, l'argument est un Plat, dans l'implémentation, c'est un pays ?!

    Un autre point important : si vous faites une modif de votre service WCF, il faut mettre à jour les projets qui y font référence (clic droit sur la référence de service, update).


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse Aurel Bera jeudi 13 septembre 2012 12:38
    lundi 2 juillet 2012 07:53

Toutes les réponses

  • Bon, ça fait + de 2 jours que je cherche une réponse pour avancer un tout petit peu, je m'acharne et je tourne en rond je compte plus les heures juste pour consommer un service ...

    Bref même si surement personne n'arrivera à me répondre je retente ma chance.

    sur mon appli winRt (métro xaml) j'ai cette méthode :

            private async void UserControl_Loaded(RecipeDataItem recipe)
            {
                Service1Client client = new Service1Client();
                pays opays = new pays();
                opays.libelle = "8test";
                opays.abrev = "ee";
                await client.setPaysAsync(opays);
    
    
            }
    
    


    et donc sur la  dernière ligne j'ai ces erreurs :


    Erreur	5	La méthode surchargée correspondant le mieux à 'YouFood_Client.ServiceReference1.Service1Client.setPaysAsync(YouFood_Client.ServiceReference1.setPaysRequest)' possède des arguments non valides	C:\Users\joel\Desktop\XAML\Final\DataModel\RecipeDataSource.cs	306	37	YouFood_Client
    Erreur	6	Argument 1 : impossible de convertir de 'YouFood_Client.ServiceReference1.pays' en 'YouFood_Client.ServiceReference1.setPaysRequest'	C:\Users\joel\Desktop\XAML\Final\DataModel\RecipeDataSource.cs	306	57	YouFood_Client
    

    Je n'arrive ni a récupérer un simple string, ni a envoyer quelque chose.

    Pour info voici mon web.config de mon service wcf :

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <connectionStrings>
        <add name="****Entities" connectionString="metadata=res://*/****.csdl|res://*/****.ssdl|res://*/****.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\SQLEXPRESS;initial catalog=****;integrated security=True;pooling=False;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>
    
      <system.serviceModel>
    
        <services>
          <service name="Wcf.Service1" behaviorConfiguration="ServiceBehavior">
            <endpoint address="" binding="basicHttpBinding" contract="Wcf.IService1" />
          </service>
        </services>
    
        <behaviors>
          <serviceBehaviors>
            <behavior name="ServiceBehavior">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    
    </configuration>
    

    et mes méthode/contrats de mon service :

            [OperationContract]
            void setPays(plat _pays);
    
    
    
    
    
            public void setPays(pays _pays)
            {
                using (Entities contexte = new Entities())
                {
                    contexte.AddObject("pays", _pays);
                    contexte.SaveChanges();
                }
            }

    J'espère que quelqu'un a une idée sur la question car j'ai vraiment tout fait pour essayer par moi même de comprendre ...

    merci à vous

    • Marqué comme réponse Aurel Bera jeudi 13 septembre 2012 12:38
    • Non marqué comme réponse Aurel Bera jeudi 13 septembre 2012 12:38
    vendredi 15 juin 2012 22:19
  • Comprends pas : dans l'interface, l'argument est un Plat, dans l'implémentation, c'est un pays ?!

    Un autre point important : si vous faites une modif de votre service WCF, il faut mettre à jour les projets qui y font référence (clic droit sur la référence de service, update).


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse Aurel Bera jeudi 13 septembre 2012 12:38
    lundi 2 juillet 2012 07:53
  • Bonjour,

    Pouvons-nous considérer que vous avez résolu votre problème avec les scénarios proposés ? Dans l'affirmative, pourriez-vous partager avec nous la solution, afin que d'autres personnes avec le même problème puissent profiter de cette solution ?

    Désormais, nous marquons les solutions proposées. N'hésitez pas à revenir et supprimer la réponse marquée si la solution n’est pas correcte. Merci !

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 13 septembre 2012 12:38