WCF comment lier plusieurs contrats de service?

Tout d'abord je vais m'excuser car c'est probablement un doublon, mais tout ce que j'ai lu semble être incomplète ou de confusion que je suis très nouveau à la WCF.

En gros, je suis à la recherche de déployer un service WCF dans IIS avec 2 points de terminaison accessibles et ont tourné en rond toute la journée 🙁

J'ai une bibliothèque pour le service WCF dll avec la structure suivante

App.config
TestSvc1.cs
ITestSvc1.cs
TestSvc2.cs
ITestSvc2.cs

Cela fonctionne bien dans le VS client test WCF et maintenant im déploiement de IIS et j'ai donc créé un Service WCF Application et fait référence à la dll. Ce projet a la structure suivante

Service1.svc
Web.config

Service1.svc contient ce

<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCFServices.TestServices.ITestSvc1" CodeBehind="Service1.svc.cs" %>

et mon web.config a la suite de

<services>
   <service name="WCFServices.TestServices.TestSvc2">
      <endpoint 
          address="" 
          binding="wsHttpBinding" bindingConfiguration="LargeSizeMessages" 
          contract="WCFServices.TestServices.ITestSvc2">
          <identity>
            <dns value="localhost" />
          </identity>
      </endpoint>
      <endpoint 
           address="mex" 
           binding="mexHttpBinding"  
           contract="IMetadataExchange" />
      <host>
         <baseAddresses>
            <add baseAddress="http://localhost:8080/wcf2/TestServices/TestSvc2/" />
         </baseAddresses>
      </host>
   </service>
   <service name="WCFServices.TestServices.TestSvc1">
      <endpoint 
          address="" 
          binding="wsHttpBinding" bindingConfiguration="LargeSizeMessages" 
          contract="WCFServices.TestServices.ITestSvc1"  
          listenUri="http://localhost:8080/wcf2/service1.svc">
          <identity>
            <dns value="" />
          </identity>
      </endpoint>
      <endpoint 
          address="" 
          binding="wsHttpBinding" bindingConfiguration="LargeSizeMessages" 
          contract="WCFServices.TestServices.ITestSvc2" 
          listenUri="http://localhost:8080/wcf2/service1.svc">
          <identity>
            <dns value="" />
          </identity>
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding"  contract="IMetadataExchange" />
      <host>
         <baseAddresses>
            <add baseAddress="http://localhost:8080/wcf2/TestServices/TestSvc1/" />
         </baseAddresses>
      </host>
   </service>     
</services>

Toute aide serait grandement appréciée. Comme vous pouvez le voir j'ai essayé d'ajouter un point de terminaison dans le web.config mais cela ne fonctionne pas, j'obtiens un message d'erreur indiquant que TestSvc2 les appels ne peuvent être trouvés dans TestSvc1 qui, j'imagine, se rapporte à l'entrée dans Service1.svc

J'ai lu aussi sur la création d'une classe qui hérite de ces interfaces, mais je ne suis pas sûr exactement comment mettre en œuvre sur la base de ce que j'ai ci-dessus. Dois-je modifier le Service1.svc?

public interface MultipleSvc : ITestSvc1, ITestSvc2
{
   //What exactly do I put here? I have no idea, do I leave it blank? This didn't work for me
}

Toute aide serait grandement appréciée, merci les gars 🙂

Une petite chose que je vois est que vous avez spécifié des espaces de noms différents pour le service 1 et 2, à savoir WCFServices.TestServices.ITestSvc1 et WCFServices.TestService.ITestSvc2. Remarque manquant s dans TestServices.ITestSvc2.
Ouais désolé c'est juste une faute de frappe pour ici juste pour illustrer les choses au mieux, mal de le modifier 🙂

OriginalL'auteur JazziJeff | 2013-01-15