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

Windows Communication Foundation .NET Discussion :

Le service WCF ne s'appelle pas à partir de la page web


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 80
    Par défaut Le service WCF ne s'appelle pas à partir de la page web
    Bonjour,

    J'ai créé un service WCF compatible silverlight (2 fichiers .cs pour le service et le contrat et 1 fichier svc qui définit ServiceHost). Je l'héberge sous IIS 7. J'ai différents questionnements par rapport à ça.
    1. Quand je le teste à partir de IIS, il m'affiche bien la page du service, mais le lien vers le wsdl affiche une page blanche.

    2. A partir de mon projet silverlight (pas le .web) j'ai intégré la référence de service de mon wcf (adresse de IIS en localhost). Lorsque j'ouvre le lien du service à partir du fichier ClientConfig (donc dans les onglets Visual) la page décrivant le service s'affiche et le wsdl aussi. Il contient bien toutes les méthodes que j'ai définies.

    3. J'ai fait un appel asynchrone à partir d'un événement bouton d'une méthode de mon service, qui retourne un string, que j'affiche ensuite dans une messagebox (tout bête pour tester). Et la message box ne s'affiche pas.

    Je ne comprends pas d'où ça pourrait venir, si quelqu'un a une idée, merci d'avance... Je débute en WCF et j'ai suivi pas mal de tutos, configuré IIS avec les mappages, bref je me suis bien pris la tête déjà...

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 80
    Par défaut Pour infos...
    Après quelques tests et lectures supplémentaires sur le web, voici mon code.
    Service1Client est le nom de mon service (le namespace est en include)

    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
     
    private void button1_Click(object sender, RoutedEventArgs e)
            {
                label1.Content = "recherche proxy";
     
                Service1Client proxy = new Service1Client();
                proxy.GetDirCompleted += new EventHandler<GetDirCompletedEventArgs>(proxy_GetDirCompleted);
     
                label1.Content = "attente webservice";
     
                //proxy.OpenAsync();
                proxy.GetDirAsync();
            }
     
            void proxy_GetDirCompleted(object sender, GetDirCompletedEventArgs e)
            {
                string reps = e.Result;
     
                label1.Content = reps;
            }
    Le résultat est censé retourner la string "Dir" initialisée en dur dans le service WCF. Mais le texte reste sur "attente webservice".

    Merci de votre aide.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Au vu du code, cela devrait normalement marcher.

    Peut on voir l'implémentation de ta fonction GetDirAsync() ?

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 80
    Par défaut
    Il n'y a pas plus simple.. Je ne fais que tester, donc ma fonction renvoie un string que j'affiche dans la page...
    Ce n'est pas GetDirAsync que j'implémente, mais GetDirCompleted

    La fonction GetDir de Service1 appelée est la suivante (elle implémente la méthode du contrat IService1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string GetDir()
          {
                return "dir";
            }
    Et la fonction qui implémente la fin de l'exécution de la méthode asynchrone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void GetDirCompleted(object sender, GetDataCompletedEventArgs e)
            {
                label1.Content = e.Result;
            }
    Maintenant le problème est le crossdomainpolicy. Je teste de 2 manières :
    - référence en "local" (ajoutée via la projet inclus dans la solution)
    - référence publiée (adresse IIS)

    Pour la référence en local :
    J'ai ajouté le fichier clientaccesspolicy.xml dans le projet de mono service WCF. Ca marche, pas d'erreurs;

    Pour la référence publiée :
    En publiant avec le fichier clientaccesspolicy.xml directement dans le projet, ça ne fonctionne pas.
    Après quelques recherches, j'ai vu qu'il fallait le mettre à la racine IIS. Ce que j'ai fait (en prenant la racine IIS C:\inetpub\wwwroot). Ca ne marche pas non plus

    Est ce que je me trompe de dossier? Peut-être suis je complètement à côte de la plaque...

    Merci

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 80
    Par défaut
    C'est bon, j'ai contourné le problème de clientaccesspolicy.
    J'appelle le webservice à partir du même serveur. Je testais en fait une application exectuée à partir de IIS mais en adresse localhost, et appelait un service WCF, publiée sous IIS aussi, mais ayant comme adresse dans le clientconfig le nom de mon pc.
    En exécutant le site avec comme racine le nom de mon pc, le service s'exécute. Par contre, toujours pas résolu réellement le problème de cross domain...

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

Discussions similaires

  1. Service WCF qui ne fonctionne pas sous IIS
    Par Mozofeuk dans le forum Windows Communication Foundation
    Réponses: 11
    Dernier message: 05/12/2008, 11h29
  2. Réponses: 2
    Dernier message: 28/08/2008, 12h27
  3. appel d'un java web service à partir d'une page web
    Par issamos4 dans le forum Services Web
    Réponses: 2
    Dernier message: 31/05/2007, 14h26
  4. Appel de fonctions Matlab à partir d'une page Web ?
    Par helice_fr dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 05/02/2007, 11h24

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