Un service, plusieurs points de terminaison, plusieurs liaisons sur WCF. Pourquoi ne puis-je pas atteindre mes points de terminaison?

J'ai un service WCF exécuter par IIS. Je voudrais créer deux clients différents (WPF et WP7), qui utilisent le même service. Le client WPF déjà avec un point de terminaison à l'aide de wsHttpBinding et https. Malheureusement WP7 ne pas faire wsHttpBindingseulement BasicHttpBinding. J'ai donc pensé que je voudrais exposer les différents points de terminaison pour les deux, afin qu'ils puissent bénéficier du même service, mais avec différentes fixations et ce n'est pas...

Voici donc mon Web.config IIS:

<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="TransportSecurity">
        <reliableSession enabled="true" />
          <security mode="TransportWithMessageCredential" >
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </wsHttpBinding>
      <basicHttpBinding>
        <binding name="BasicTransportSecurity">
           <security mode="Transport">
              <transport clientCredentialType="None"/>
           </security>
         </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="SmartCook2.Server.ISmartCookServiceBehavior">
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <services>
      <service behaviorConfiguration="SmartCook2.Server.ISmartCookServiceBehavior"
        name="SmartCook2.Server.SmartCookService">
        <endpoint address="WS" binding="wsHttpBinding" bindingConfiguration="TransportSecurity"
          name="WS" contract="SmartCook2.Server.ISmartCookService" />
        <endpoint address="Basic" binding="basicHttpBinding" bindingConfiguration="BasicTransportSecurity"
          name="Basic" contract="SmartCook2.Server.ISmartCookService" />
        <endpoint address="mex" binding="mexHttpsBinding" name="mex"
          contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
<connectionStrings>
    <add name="SmartCookDBEntities" connectionString="metadata=res://*/SmartCookContext.csdl|res://*/SmartCookContext.ssdl|res://*/SmartCookContext.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=RENDERBETYAR;initial catalog=SmartCookDB;integrated security=True;pooling=False;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

</configuration>

Maintenant, si j'ai bien compris les points de terminaison doivent être accessibles à l'adresse suivante:

https://localhost/IISHostedSmartCook/SmartCookService.svc/Basic
https://localhost/IISHostedSmartCook/SmartCookService.svc/WS
https://localhost/IISHostedSmartCook/SmartCookService.svc/mex

Si j'ai vérifier dans mon navigateur, je ne reçois rien. Il n'y a pas d'exception, mais pas de contenu. À l'aide de l'adresse de base (jusqu'à la .svc partie), je reçois le service par défaut de la page et je peux accéder au fichier wsdl, et il est valide. Il a les points de terminaison, mon du service des méthodes, etc correctement dans la mesure où je peux dire.

Si j'essaie d'ajouter le ServiceReference à mon WP7 projet Visual Studio, je ne peux voir que mon service en vertu de l'adresse de base (point de terminaison spécifique des adresses de retour pour rien). Si je l'ajoute, les classes sont générées sur la droite, seulement je ne peux pas appeler mon service méthodes et j'obtiens le message d'erreur "Il n'y a pas de point de terminaison à l'écoute à cette adresse". (C'est également le cas si j'utilise le service client du constructeur nécessitant le point de terminaison du nom.)

Ce que je fais mal?

source d'informationauteur Tenshiko | 2011-10-24