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 :

Impossible d'obtenir une chaîne d'un Web Service


Sujet :

Silverlight

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Impossible d'obtenir une chaîne d'un Web Service
    Salut tout le monde,

    J'ai fait un Web Service très simple (que j'ai eu sur le Web) qui retourne la chaîne "Hello World".

    Voici son 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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Xml.Linq;
     
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    // [System.Web.Script.Services.ScriptService]
    public class Service : System.Web.Services.WebService
    {
        public Service () {
     
            //InitializeComponent(); 
        }
     
        [WebMethod]
        public string HelloWorld() {
            return "Hello World";
        }
     
    }
    Et je ne n'arrive pas à obtenir cette chaîne à partir de mon site Silverlight 2.0.

    Voici le 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
     
    using Microsoft.Windows.Controls.DataVisualization.Charting;
    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;
    using System.ServiceModel;
    using System;
     
    namespace MicrosoftVersion
    {
        public partial class Page : UserControl
        {
            public Page()
            {
                InitializeComponent();
                PieSeries cs = TAR_PieChart.Series[0] as PieSeries;
                cs.ItemsSource = clsTAR_Datas.GetTAR_DataByStatus();         
     
            }
     
            private void CallServiceButton_Click(object sender, RoutedEventArgs e)
            {
                // using ASMX Web Service            
               //ServiceTAR est le Web Service déclaré dans mon site Silverlight
               //MicrosoftVersion est l enom de mon site Silverlight
                ServiceTAR.ServiceSoapClient proxy = new MicrosoftVersion.ServiceTAR.ServiceSoapClient();
     
                proxy.HelloWorldCompleted += new EventHandler(proxy_HelloWorldCompleted);
                proxy.HelloWorldAsync(); 
            }
     
            void proxy_HelloWorldCompleted(object sender, MicrosoftVersion.ServiceTAR.HelloWorldCompletedEventArgs e)
            {
                string strlist = e.Result;
                //TextBoxEssai1 i sa textbox in my Silverlight page.
                TextBoxEssai1.Text = strlist;
            }
     
        }
    }
    Il n'y a plus d'erreurs de compliation mais "Hello World" ne s'affiche pas (quand je clique sur le bouton).

    Mon navigateur me prévient juste que qu'il ya des erreurs en bas à gauche...

    Qu'ai-je oublié ?

    Merci beaucoup d'avance pour vos réponses.

    Laurent.

    Thank you very much for your answers.

    Laurent.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Ton WebService est sur le même domaine que ton application Silverlight ? Car sinon, il te faut un fichier clientaccesspolicy.xml...

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Merci pour ta réponse Thomas,

    Mon WebService et mon application Silverlight se trouvent sur ma machine locale.

    Laurent.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Attention,

    Machine locale != Même domaine.

    Il passe tous les 2 par localhost mais par des port différents donc pour Silverlight, c'est un domain différent donc problème de cross-domain...

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Thomas :

    J'ai eu des infos sur la création des fichiers 'clientaccesspolicy.xml'.

    Voici le code du mien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="utf-8"?>
    <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>
    Et j'ai copié ce fichier dans la racine de mon WebService, et cela ne marche toujours pas : j'ai la même erreur : 'Async_ExceptionOccured'.

    Mais quand je teste mon appli utilisatrice du WebService dans le navigateur j'ai :

    C:\...\WebServiceTest\Bin\Debug\TestPage.html

    Est-ce qu'il ne faut pas que j'ai plutot une url du type http://localhost... ?

    Laurent.

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par laurent_diep Voir le message
    Et j'ai copié ce fichier dans la racine de mon WebService,
    Il faut le mettre à la racine du serveur Web.

    Est-ce qu'il ne faut pas que j'ai plutot une url du type http://localhost... ?

    Laurent.
    Oui, ce serait mieux de le lancer en HTTP....

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    En effet c'était bien cela Thomas :

    Il faut mettre un fichier clientaccesspolicy.xml (voir ci dessus) dans la racine du Web Service et appeller le fichier Silverlight xap (le xaml compilé) (encapsulé dans un fichier aspx) par http et non par le chemin windows (fichier html généré automatiquement).

    Merci encore.

    Laurent.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/01/2012, 10h08
  2. Réponses: 5
    Dernier message: 17/05/2011, 17h11
  3. obtenir @ IP client à partir de web service
    Par ansoni dans le forum Services Web
    Réponses: 1
    Dernier message: 26/12/2007, 11h57
  4. Obtenir une chaîne à partir d'une énumération
    Par zidenne dans le forum Langage
    Réponses: 1
    Dernier message: 12/11/2005, 10h39

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