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 :

Accès à un service WCF distant


Sujet :

Silverlight

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Points : 144
    Points
    144
    Par défaut Accès à un service WCF distant
    Bonjour,

    Encore quelques problème dans le dépoiement d'une application Silverlight utilisant un service WCF distant.

    Mon service est bien accessible depuis son hébergement sur www.mydomain.com/service01/service.svc.

    D'ailleurs je peux y faire référence dans Visual Studio. Mais j'ai le warning suivant qui est affiché :

    Warning 1 Could not locate cross-domain policy at 'www.mydomain.fr': Web services might not be accessible at runtime by your Silverlight application. For more details please contact the web server administrator or press F1 after selecting this warning 0 0
    Après avoir pris connaissance de ce Warning, j'ai bien entendu vérifié les fichiers crossdomain.xml et clientaccesspolicy.xml. Je les ai placé à la racine du server www.mydomain.com. (J'ai également essayé dans le dossier du service).

    Voici le code de ces fichiers :

    1. Clientaccesspolicy

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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>
    2.CrossDomain

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
      <allow-http-request-headers-from domain="*" headers="*"/>
    </cross-domain-policy>
    Ce sont les codes que j'ai trouvé sur MSDN.

    Mais comme prévuu par le Warning, quand j'execute l'application j'ai l'erreur :

    Une erreur s'est produite en tentant d'effectuer une demande à l'URI 'http://www.mydomain.fr/service01/SQLService.svc'. Ce problème peut être dû à une tentative d'accès à un service entre domaines sans qu'une stratégie entre domaines appropriée soit en place, ou une stratégie inadaptée aux services SOAP. Il est possible que vous soyez contraint de contacter le propriétaire du service pour publier un fichier de stratégie entre domaines et veiller à ce qu'il autorise l'envoi d'en-têtes HTTP SOAP. Cette erreur peut également être liée à l'utilisation de types internes dans le proxy de service Web sans utiliser l'attribut InternalsVisibleToAttribute. Consultez l'exception interne pour plus de détails.
    Pouvez vous m'aider à ce sujet? Y a t'il un fichier mal placé ou absent?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Hum...

    Normalement le fichier doit se trouver à la racine de ton serveur web ce qui à priori est le cas.

    Si tu tentes d'accéder au fichier par l'URL ça donne quoi ?

    Regarde avec Fiddler si Silverlight demande bien le fichier xml et si oui ce qui est retourné par ton serveur web.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Points : 144
    Points
    144
    Par défaut
    Les fichiers sont lisibles (s'ouvrent dans le navigateur) si je passe par l'url.

    Qu'est ce que fiddler?

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par PerpetualSnow Voir le message
    Les fichiers sont lisibles (s'ouvrent dans le navigateur) si je passe par l'url.

    Qu'est ce que fiddler?
    C'est un outil pour debugger les requêtes HTTP tu peux voir ce que tu envoies et ce que tu reçois en échange. C'est utile dans des cas comme ça.
    http://www.fiddler2.com/fiddler2/
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 192
    Points : 144
    Points
    144
    Par défaut
    Au risque de me faire détester...

    Le fichier clientaccesspolicy.xml, placé à la racine du serveur est suffisant.

    Le code est bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?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>
    Il ne faut surtout pas oublier le "http-request-headers="*"".

    A force de faire des tests, j'avais mélangé les versions de fichiers de clientaccesspolicy.xml. Et l'oubli d'un autre fichier masquait l'erreur.
    Bref, j'avais bon depuis le début : une journée de boulot à chercher pour rien...

    Merci à Skyounet

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/01/2013, 15h10
  2. accès distant à un service wcf
    Par imenbel dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 29/04/2010, 16h59
  3. Accès aux services WCF sans paramétrage des adresses dans les endpoint
    Par eric39 dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 25/03/2009, 11h16
  4. Réponses: 4
    Dernier message: 25/01/2009, 16h12
  5. acces distant a un service WCF
    Par manel_nasri dans le forum Windows Communication Foundation
    Réponses: 12
    Dernier message: 21/06/2008, 11h10

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