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 :

[WCF] Prise de tête


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Par défaut [WCF] Prise de tête
    Bonjour,

    Bon je reviens à la charge concernant les WCF de mer....

    J'ai fait une application selon le tuto suivant:

    http://www.wcftutorial.net/WCF-IIS-Hosting.aspx

    Le problème est que lorsque je fait "Afficher dans le navigateur" sur le Service.svc

    j'ai le message suivant:

    Il s'agit d'un service Windows© Communication Foundation.

    La publication des métadonnées pour ce service est actuellement désactivée.

    Si vous avez accès au service, vous pouvez activer la publication des métadonnées en exécutant les étapes suivantes pour modifier votre fichier de configuration Web ou d'application :

    1. Créez la configuration de comportement de service suivante ou ajoutez l'élément <serviceMetadata> à une configuration de comportement de service existante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <behaviors>
        <serviceBehaviors>
            <behavior name="MyServiceTypeBehaviors" >
                <serviceMetadata httpGetEnabled="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    2. Ajoutez la configuration du comportement au service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <service name="MyNamespace.MyServiceType" behaviorConfiguration="MyServiceTypeBehaviors" >
    Remarque : le nom du service doit correspondre au nom de configuration pour l'implémentation du service.

    3. Ajoutez le point de terminaison suivant à la configuration de votre service :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
    Remarque : Votre service doit posséder une adresse de base http pour ajouter ce point de terminaison.

    L'exemple suivant est un fichier de configuration de service où la publication des métadonnées est activée :

    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
    <configuration>
        <system.serviceModel>
     
            <services>
                <!-- Remarque : le nom du service doit correspondre au nom de configuration pour l'implémentation du service. -->
                <service name="MyNamespace.MyServiceType" behaviorConfiguration="MyServiceTypeBehaviors" >
                    <!-- Ajoutez le point de terminaison suivant.  -->
                    <!-- Remarque : votre service doit posséder une adresse de base http pour ajouter ce point de terminaison. -->
                    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
                </service>
            </services>
     
            <behaviors>
                <serviceBehaviors>
                    <behavior name="MyServiceTypeBehaviors" >
                        <!-- Ajoutez l'élément suivant à la configuration du comportement de votre service. -->
                        <serviceMetadata httpGetEnabled="true" />
                    </behavior>
                </serviceBehaviors>
            </behaviors>
     
        </system.serviceModel>
    </configuration>
    Pour plus d'informations sur la publication des métadonnées, voir la documentation suivante : http://go.microsoft.com/fwlink/?LinkId=65455 (éventuellement en anglais).
    Le problème c'est que dans mon fichier Web.config j'ai bien true pour les metas data:

    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
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     
      <system.web>
        <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
        <pages>
          <namespaces>
            <add namespace="System.Runtime.Serialization" />
            <add namespace="System.ServiceModel" />
            <add namespace="System.ServiceModel.Web" />
          </namespaces>
        </pages>
      </system.web>
      <system.serviceModel>
        <services>
          <service behaviorConfiguration="ServiceBehavior" name="Service">
            <endpoint address="http://localhost/IISHostedService/MyService.svc"
            binding="wsHttpBinding" contract="IServiceChat">
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="ServiceBehavior">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
     
      <system.webServer>
       <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
     
    </configuration>
    De plus si je fait afficher dans le navigateur sur le site web j'ai le message d'erreur suivant:

    Le site Web a refusé d’afficher cette page Web
    HTTP 403
    Causes les plus probables :
    •Ce site Web requiert que vous vous connectiez.

    Essayez la chose suivante :
    Aller à la page précédente.

    Informations

    Cette erreur (HTTP 403 Refusé) signifie qu’Internet Explorer a réussi à se connecter au site Web, mais qu’il n’est pas autorisé à afficher la page Web.

    Pour plus d’informations sur les erreurs HTTP, consultez l’aide.
    Et ben là je comprends plus rien !

    Ah mon bon vieux VB6 !!!

    Merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    faut arrêter un peu avec ce genre de "ah mon vb6..." comme si on pouvais être nostalgique d'une époque où on ne pouvait rien faire.

    tes wcf services sont http binding... essaie ça pour voir si ça marche
    http://localhost/IISHostedService/MyService.svc?wsdl

  3. #3
    Invité
    Invité(e)
    Par défaut
    Essaie en mettant un url relatif comme addresse de ton endpoint ou tout simplement met une chaine vide.

    Je pense que vu qu'on utilise un répertoire virtuel alors l'adresse de base du service est directement mappé au répertoire virtuel d'ou réside ton service, d'où il est conseillé de mettre un chemin relatif comme adresse dans un endpoint d'un service hébergé par un serveur web tel que IIS ou celui de VS.

  4. #4
    Membre extrêmement actif Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Par défaut
    Citation Envoyé par cinemania Voir le message
    faut arrêter un peu avec ce genre de "ah mon vb6..." comme si on pouvais être nostalgique d'une époque où on ne pouvait rien faire.

    tes wcf services sont http binding... essaie ça pour voir si ça marche
    http://localhost/IISHostedService/MyService.svc?wsdl
    Pour être honnête cela fait plus de 20 que je développe et maintenant avec toutes ces nouveautés (WCF, WPF etc....) c'est devenu tellement compliqué que je n'arrive rien à faire.

    Tout les tutos qu'ôn trouve ne fontionnent pas lorsque qu'on les télécharges et exécute.

    Donc, à l'époque du VB6 j'arrivais à faire des applications sans tout ces problèmes du genre t'as oublié la virgule en bas à droite du fichier App.config etc....

    Mais bon ce n'est que mon avis

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    Pour être honnête cela fait plus de 20 que je développe et maintenant avec toutes ces nouveautés (WCF, WPF etc....) c'est devenu tellement compliqué que je n'arrive rien à faire.

    Tout les tutos qu'ôn trouve ne fontionnent pas lorsque qu'on les télécharges et exécute.

    Donc, à l'époque du VB6 j'arrivais à faire des applications sans tout ces problèmes du genre t'as oublié la virgule en bas à droite du fichier App.config etc....

    Mais bon ce n'est que mon avis
    WCF Compliqué ????????????????

    Tu utilises un ESB sur host IIS, soit avec ses contraintes de sécurité, sur lesquels tu pannes (probablement que tu n'es pas authentifié).

    Déjà à la base, pour développer un service WCF tu utilises un service local, ça te permettra de savoir simplement si tu as un pb de web server ou un problème de IIS.

    Et qu'à priori pour créer un behavior spécifique, il ne suffit pas de faire un fichier XML, il faut aussi le créer.

  6. #6
    Membre extrêmement actif Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Par défaut
    Citation Envoyé par B.AF Voir le message
    WCF Compliqué ????????????????

    Tu utilises un ESB sur host IIS, soit avec ses contraintes de sécurité, sur lesquels tu pannes (probablement que tu n'es pas authentifié).

    Déjà à la base, pour développer un service WCF tu utilises un service local, ça te permettra de savoir simplement si tu as un pb de web server ou un problème de IIS.

    Et qu'à priori pour créer un behavior spécifique, il ne suffit pas de faire un fichier XML, il faut aussi le créer.
    Un service local ne m'intéresse pas si par la suite je ne peux pas le rendre accessible via IIS (Ou il y un truc que je n'ai pas compris).

    Pour l'authentification, je suis parti d'un projet "Nouveau Site Web" dont j'ose espérer qu'il configure tout seul les droits de ce projet.

    Entre temps j'ai progressé un peu (Et oui je râle mais je suis tenace).

    Mon problème est le suivant:

    Dans mon web.config:

    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
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     
      <system.web>
        <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
        <pages>
          <namespaces>
            <add namespace="System.Runtime.Serialization" />
            <add namespace="System.ServiceModel" />
            <add namespace="System.ServiceModel.Web" />
          </namespaces>
        </pages>
      </system.web>
     
      <system.serviceModel>
        <services>
          <service name="Service">
            <endpoint address="" binding="WSDualHttpBinding" contract="IService"></endpoint>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <!-- Pour éviter la divulgation des informations sur les métadonnées, définissez la valeur ci-dessous sur false et supprimez le point de terminaison des métadonnées ci-dessus avant le déploiement -->
              <serviceMetadata httpGetEnabled="true"/>
              <!-- Pour recevoir les détails d'exception des erreurs à des fins de débogage, définissez la valeur ci-dessous sur true.  Définissez-la sur false avant le déploiement pour éviter la divulgation des informations d'exception -->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
     
      <system.webServer>
       <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
     
    </configuration>
    Lorsque je fait "Afficher dans le navigateur sur mon service j'ai le message d'erreur suivant:

    Erreur du serveur dans l'application '/DSoftsWCFService'.
    --------------------------------------------------------------------------------

    L'extension de liaison de configuration 'system.serviceModel/bindings/WSDualHttpBinding' est introuvable. Vérifiez que cette extension de liaison est correctement inscrite dans system.serviceModel/extensions/bindingExtensions et qu'elle est correctement orthographiée.
    Donc là je ne vois plus bien ce que je peux faire.

    De plus, je ne suis pas de formation Info donc les behavior et compagnie c'est pas facile pour moi. D'autant plus, qu'on ne trouve rien (même sur le site Microsoft) qui explique clairement ce que c'est et comment s'en servir.

    Mais merci pour votre aide

  7. #7
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Par défaut
    Là.

    Très honnêtement, ça ne sert à rien qu'on te corrige le fichier, car tu seras bloqué au prochain développement.

    Je te conseille donc de faire les tutoriels qui sont très clairs et de te familiariser avec les concepts d'endpoint et de binding.

    Le endpoint ne peut de toutes façon pas marcher, puisqu'il représente l'exposition 'technique' de ton service.
    C'est à dire :
    • Le contrat du service (l'interface)
    • Le binding (la liaison) qui spécifie le comportement technique de la distribution
    • L'Uri qui spécifie l'adresse du service


    Ton erreur est vicieuse car il faut le savoir ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <endpoint address="./MyService.svc" binding="wsDualHttpBinding" contract="IServiceChat"></endpoint>
    Et n'oublies pas de spécifier l'adresse du service correctement.

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    Pour être honnête cela fait plus de 20 que je développe et maintenant avec toutes ces nouveautés (WCF, WPF etc....) c'est devenu tellement compliqué que je n'arrive rien à faire.
    Moi aussi ca fait plus de 20 ans, et justement je trouve que par rapport à l'époque où il fallait jongler avec X25 puis SNA et la LU6.2 (pour IBM), l'APPC/COM (pour Unisys en base Burroughs)j'en passe et des plus tordues, (qui à l'époque permettait aussi de très bien gagner sa vie, c'est vrai) n'avoir plus qu'à s'occuper que de TCP/IP largement masqué par WCF est des plus simples.

    Donc je ne partage pas du tout ton opinion.

    Sinon, pour ton problème, ton mex n'a pas d'adresse; utilise une entrée baseadresse,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <host>
    <baseAddresses>
    <add baseAddress="http://localhost/IISHostedService/" />
    </baseAddresses>
    </host>
    et exprime les adresses des EP respectifs du mex et du service en relatif à partir de cela.

    Donc, à l'époque du VB6 j'arrivais à faire des applications sans tout ces problèmes du genre t'as oublié la virgule en bas à droite du fichier App.config etc....
    Désolé, ou t'as mauvaise mémoire, ou tu développais des trucs un peu bizarre : je te rapelle qu'avec VB6 les couches serveurs applicatives il fallait se les fader en C++ avec le RPC et les API du SC Manager et coté client il fallait aussi une DLL en C ou C++.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2006, 09h09
  2. Réponses: 7
    Dernier message: 23/12/2005, 16h21
  3. Catalogue tables : prise de tête
    Par KinF dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/12/2005, 01h04
  4. [MFC] Prise de tête avec UpdateAllViews
    Par pataguillon dans le forum MFC
    Réponses: 13
    Dernier message: 11/08/2005, 13h58

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