16 votes

WCF NetTcpBinding avec mex

J'essaie de publier un service wcf en utilisant nettcpbinding. Je veux publier des métadonnées, en utilisant ?wsdl. J'ai ajouté la ligne suivante au fichier de configuration :

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

mais je n'arrive pas à voir le wsdl dans mon navigateur. qu'est-ce que j'ai fait de mal ? Je vous remercie.

Edit : Voici la partie pertinente de mon fichier de configuration :

<system.serviceModel>
   <services>
<service name="wcfcheck.service1" behaviorConfiguration="wcfcheck.Service1Behavior">
       <endpoint address="" binding="netTcpBinding" contract="wcfcheck.Iservice1"/>
       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
   </services>
<behaviors>
<serviceBehaviors>
  <behavior name="wcfcheck.Service1Behavior">
    <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
    <serviceDebug includeExceptionDetailInFaults="true"/>
  </behavior>
</serviceBehaviors>

Il se peut que je n'accède pas à la bonne URL. J'ai essayé les deux http://localhost:51159/Service1.svc?wsdl y http://localhost:51159/Service1.svc/mex?wsdl et sans le '?wsdl'.

13voto

John Saunders Points 118808

Vous devez utiliser le <serviceMetadata> élément.

    <behaviors>
      <serviceBehaviors>
      <behavior name="metadataSupport">
        <!-- Enables the IMetadataExchange endpoint in services that -->
        <!-- use "metadataSupport" in their behaviorConfiguration attribute. -->
        <!-- In addition, the httpGetEnabled and httpGetUrl attributes publish -->
        <!-- Service metadata for retrieval by HTTP/GET at the address -->
        <!-- "http://localhost:8080/SampleService?wsdl" -->
        <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
      </behavior>
    </serviceBehaviors>
  </behaviors>

12voto

Mehmet Aras Points 3901

Vous devez publier les métadonnées de service via http pour wsdl. Ajoutez la balise suivante à la balise <system.serviceModel> de votre fichier de configuration

<behaviors>
  <serviceBehaviors>
    <behavior name = "MetadataBehavior">
      <serviceMetadata httpGetEnabled = "true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

Vous devrez également spécifier une adresse http à partir de laquelle les métadonnées de service dans wsdl seront disponibles. Ajoutez ceci au nœud <service> de votre fichier de configuration :

<host>
  <baseAddresses>
    <add baseAddress="net.tcp://localhost:8001" />
    <add baseAddress="http://localhost:8000/Service1" />
  </baseAddresses>
</host>

Ensuite, si vous allez sur http://localhost:8000/Service1?wsdl vous devriez voir le wsdl de votre service.

1voto

GPuri Points 26

Vous pouvez essayer la liaison mexTcp et vous assurer que votre adresse de base commence par net.tcp://......

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X