IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

probleme appel webservice distant


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 713
    Par défaut probleme appel webservice distant
    Bonjour, j'ai une appli qui doit appeler un webservice php qui fonctionne avec un clientaccesspolicy.xml sur le root. Dans fiddler je reçois tout sauf l'appel de mon service quand je clique sur le bouton. Le service reference c'est bien passé et la méthode a été reconnue.

    Voici mon code

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
     
    namespace SilverlightApplication6
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                ServiceReference1.HelloYouPortClient proxyMonWebService = new ServiceReference1.HelloYouPortClient();
     
                proxyMonWebService.getHelloAsync("nom", "prenom");
                proxyMonWebService.getHelloCompleted += service_getHelloCompleted;
     
                MessageBox.Show("io");
            }
     
            /*
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("io");
     
                ServiceReference1.HelloYouPortClient service =
                    new ServiceReference1.HelloYouPortClient();
                service.getHelloCompleted +=
                    new EventHandler<ServiceReference1.getHelloCompletedEventArgs>(service_getHelloCompleted);
     
                service.getHelloAsync("nom","prenom");
            }
            */
     
            public void service_getHelloCompleted(object sender,
                    ServiceReference1.getHelloCompletedEventArgs e)
            {
                MessageBox.Show(e.Result);
            }
        }
    }
    et mon clientaccesspolicy

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <access-policy>
       <cross-domain-access>
          <policy>
             <allow-from http-request-headers="*">
                <domain uri="*"/>
             </allow-from>
             <grant-to>
                <resource path="/" include-subpaths="true"/>
             </grant-to>
          </policy>
       </cross-domain-access>
    </access-policy>
    Quelqu'un pourrait 'aider ?

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Si le webservice est sur le même domaine Silverlight n'appelera pas le clientaccesspolicies je pense.

    Sinon inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    proxyMonWebService.getHelloAsync("nom", "prenom");
                proxyMonWebService.getHelloCompleted += service_getHelloCompleted;
    J'en doute mais il est possible que ton webservice retourne le résultat avant même que le délégué soit remplis par ton service_getHelloCompleted.

  3. #3
    Membre actif Avatar de freezer08
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut
    Est-ce que ton web service est hébergé en local ?
    Si c'est le cas, c'est normal que tu ne vois rien, Fiddler ne sniffe pas les paquets envoyés en localhost.

    2 astuces pour pallier à ça :
    http://weblogs.asp.net/lorenh/archiv...localhost.aspx
    http://blogs.microsoft.co.il/blogs/s...localhost.aspx

    Et comme l'a noté micka132, effectivement, en toute logique, il vaut mieux s'abonner au callback avant de faire l'appel asynchrone (même si ça ne devrait rien changer ...)

  4. #4
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 713
    Par défaut
    Mon service est sur un serveur distant.

    ...par ailleurs le messagebox ne fonctionne pas. J'imagine donc que le probleme doit se situer au niveau de l'appel. Pour info, j'appelle le service en local et ça fonctionne.

    micka132, en inversant ça ne marche pas.

    Je veux dire que j'ai fait un script php en local pour tester sur le service etait accessible depuis le local et c'est le cas ...

  5. #5
    Membre actif Avatar de freezer08
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut
    Est-ce que tu as lancé ton application en mode debug pour voir si elle exécutait bien le code au clic du bouton ?
    Si Fiddler n'affiche rien et que tu ne rentres jamais dans la méthode Completed, c'est que l'appel n'a jamais été lancé.

  6. #6
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 713
    Par défaut
    Je suis bien en mode debug ... Je crois que c'est le cas dont tu parles:

    en rajoutant un message dans le onClick, je ne reçois pas le deuxieme message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                MessageBox.Show("avant");
                ServiceReference1.HelloYouPortClient proxyMonWebService = new ServiceReference1.HelloYouPortClient();
     
               proxyMonWebService.getHelloCompleted += service_getHelloCompleted;
                proxyMonWebService.getHelloAsync("nom", "prenom");
     
     
                MessageBox.Show("io");
    de plus j'ai maintenant un
    KeyNotFoundException :

    The given key was not present in the dictionary.

  7. #7
    Membre actif Avatar de freezer08
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut
    Il doit s'agir d'un problème venant du ServiceClient.config généré par Visual Studio avec le proxy web service.
    Quand tu instancies ton proxy avec le constructeur par défaut, il va chercher la clé par défaut dans le fichier de config. Vérifie le fichier, ça doit venir de là.

  8. #8
    Membre très actif Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 713
    Par défaut
    Si tu parles du fichier ServiceReferences.ClientConfig, il est vide...

    C'est bien celui là ?

  9. #9
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Je trouve bizzare la maniède d'enregistrer le callback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    proxyMonWebService.getHelloCompleted += service_getHelloCompleted;
    Normalement c'est plutôt du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    proxyMonWebService.getHelloCompleted +=new EventHandler<getHelloCompletedEventArgs>(service_getHelloCompleted)
    J'avou ne pas savoir la différence.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme Appel webservice 4D 2003
    Par maveric dans le forum 4D
    Réponses: 4
    Dernier message: 28/09/2006, 16h39
  2. [Eclipse 3.1][Tomcat][Axis]Probleme execution WebService
    Par beZor dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 08/02/2006, 13h55
  3. [VB.Net] Problème appel fonction par un bouton
    Par balibo dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/11/2005, 10h48
  4. Probleme de connection distante
    Par scaleo dans le forum Outils
    Réponses: 3
    Dernier message: 16/09/2005, 17h55
  5. [MFC] débutant probleme appel de fonction
    Par Gloubi99 dans le forum MFC
    Réponses: 9
    Dernier message: 30/08/2005, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo