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 :

Publication de métadonnées WCF : adresse relative non prise en compte


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Publication de métadonnées WCF : adresse relative non prise en compte
    Bonsoir,

    Voilà un bon moment que je bataille avec une configuration qui devrait me permettre d'exposer les métadonnées de mon service WCF.

    Pour info, je sais comment exposer les métadonnées. On utilise la plupart le traditionnel endpoint particulier qu'on reconnait par les valeurs suivantes :

    • address = "mex"
    • binding = "mexHttpBinding"
    • contract = "IMetadataEchange


    La configuration suivante marche à merveille :
    Code xml : 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
     
    <system.serviceModel>
    <services>
      <service name="WCFLibrary.Service" behaviorConfiguration="mexGet">
    	<host>
    	  <baseAddresses>
    		<add baseAddress="http://localhost:8000/" />
    		<add baseAddress="net.tcp://localhost:8001" />
    	  </baseAddresses>
    	</host>
    	<endpoint address="Service"
    			  binding="netTcpBinding"
    			  contract="WCFLibrary.IService" />
    	<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    	</services>
    	<behaviors>
    	  <serviceBehaviors>
    		<behavior name="mexGet">
    		  <serviceMetadata httpGetEnabled="true" httpGetUrl="Metadata" />
    		</behavior>
    	  </serviceBehaviors>
    	</behaviors>
    </system.serviceModel>

    J'arrive bien à accéder à mes métadonnées grâce à l'url : http://localhost:8000/Metadata?wsdl

    Mais j'ai voulu essayer une autre méthode pour exposer mes données histoire de tester un truc nouveau en utilisant les endpoints standards. Alors j'ai changé ma configuration pour avoir ça :
    Code xml : 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
     
    <system.serviceModel>
        <services>
          <service name="WCFLibrary.Service" behaviorConfiguration="mexGet">
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8000/" />
                <add baseAddress="net.tcp://localhost:8001" />
              </baseAddresses>
            </host>
            <endpoint address="Service"
                      binding="netTcpBinding"
                      contract="WCFLibrary.IService" />
            <endpoint kind="mexEndpoint" address="Metadata" />
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="mexGet">
              <serviceMetadata httpGetEnabled="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>

    J'arrive toujours à accéder à mes métadonnées via l'url http://localhost:8000/?wsdl mais ce que je ne comprends pas : pourquoi mon adresse relative n'est pas prise en compte alors je l'ai bien mentionnée dans le endpoint comme suit :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <endpoint kind="mexEndpoint" address="Metadata" />

    Sinon en enlevant l'adresse relative de mon endpoint et en la mettant dans l'adresse de base cela marche comme avec la première configuration.

    Je veux juste savoir pourquoi si l'adresse relative est définie dans le endpoint elle n'est prise en compte ?

    Merci d'avance.
    Dernière modification par Invité ; 05/08/2011 à 21h05.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Alors j'ai regardé qu'est ce que le monsieur MSDN il disait dans la doc:
    http://msdn.microsoft.com/en-us/library/ms731320.aspx
    Citation Envoyé par MSDN
    kind : A string that specifies the type of standard endpoint applied. The type must be registered in the <extensions> section or in machine.config. If nothing is specified, a common service endpoint is created.
    Manifestement, tu n'as pas de sections <extensions> dans ton fichier de config et je sais pas si c'est le cas pour toi, mais moi je l'ai pas non plus dans mon machine.config!

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Manifestement, tu n'as pas de sections <extensions> dans ton fichier de config et je sais pas si c'est le cas pour toi, mais moi je l'ai pas non plus dans mon machine.config!
    Monsieur MSDN a bien raison s'il s'agit d'un endpoint personnalisé (que tu as créé) et qu'on voudra par la suite utilisé comme endpoint standard. Du coup pour pouvoir l"utiliser dans ta configuration tu dois l'importer via l'élément <extensions> donc normal que tu l'ais pas dans ton machine.config que tu n'as pas encore créé d'endpoint standard.

    Dans mon cas le endpoint standard que j'utilise n'est pas personnalisé il est déjà intégré à WCF il s'agit de mexEndpoint donc pas besoin de l'élément <extensions> je pense. Sinon dans les exemples MSDN que j'ai pu voir aucun n'utilise une adresse relative lorsqu'il s'agit de ce endpoint pour exposer les métadonnées ?

    Pour info je me base sur les exemples fournis dans le livre Programming WCF Services: Amazon.fr: Juval Lowy: Livres anglais et ?trangers@@AMEPARAM@@http://ecx.images-amazon.com/images/I/41ednsqKVdL.@@AMEPARAM@@41ednsqKVdL
    qui ne mentionne à aucun moment le fait d'utiliser l'élément <extension> et de plus dis qu'on peut spécifier une adresse relative comme je l'ai fait dans mon post précédent.

    Merci pour ta réponse. Si t'as d'autres pistes je suis à l'écoute

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Dans mon cas le endpoint standard que j'utilise n'est pas personnalisé il est déjà intégré à WCF il s'agit de mexEndpoint donc pas besoin de l'élément <extensions> je pense.
    Ben moyennement sur pour le coup car les standars dont définis dans le machine.config chez moi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <endpointExtensions>
    	<add name="dynamicEndpoint" type="System.ServiceModel.Discovery.Configuration.DynamicEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    	<add name="discoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.DiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    	<add name="udpDiscoveryEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpDiscoveryEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    	<add name="announcementEndpoint" type="System.ServiceModel.Discovery.Configuration.AnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    	<add name="udpAnnouncementEndpoint" type="System.ServiceModel.Discovery.Configuration.UdpAnnouncementEndpointCollectionElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    	<add name="workflowControlEndpoint" type="System.ServiceModel.Activities.Configuration.WorkflowControlEndpointCollectionElement, System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    	<add name="webHttpEndpoint" type="System.ServiceModel.Configuration.WebHttpEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    	<add name="webScriptEndpoint" type="System.ServiceModel.Configuration.WebScriptEndpointCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </endpointExtensions>

  5. #5
    Invité
    Invité(e)
    Par défaut
    On a la même config pour cette section du fichier machine.config.

    Sinon, j'ai essayé de passer parle code en effectuant les mêmes configurations et cela ne marche pas.

    Je note juste quelque part dans ma petite tête que le mexEndpoint standard ne prend pas en compte l'adresse relative ou absolue qu'on lui fournit mais se basera toujours sur l'une des adresses de bases fournie pour exposer les métadonnées.

    Merci pour ton aide.

Discussions similaires

  1. Adresse IP non prise en compte par le système
    Par lesouriciergris dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 08/03/2007, 21h50
  2. Installation SP2 + RAM non prise en compte
    Par laure_belette dans le forum Windows XP
    Réponses: 3
    Dernier message: 13/10/2005, 12h46
  3. [css] Feuille de style non prise en compte
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/06/2005, 11h49
  4. [netbeans] Modifications non prises en compte
    Par nadass dans le forum NetBeans
    Réponses: 6
    Dernier message: 07/04/2005, 13h49
  5. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57

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