2009-07-22 7 views
0

J'ai créé un service qui permet aux clients de rechercher des informations sur les utilisateurs. Ceci est exposé en tant qu'interface ISearchUsers.1 point de fin de plusieurs contrats de service - wcf?

je cet article comme base, mais en vain: Je ne sais pas si cela est le chemin à parcourir link text

Maintenant, je veux créer et exposer une interface appelée ICreateUser et je suppose que je devais créer un nouveau point de terminaison, basicHttp liaison et utilisé l'article ci-dessus.

Cela fait partie de ma config:

<services> 
     <service behaviorConfiguration="Service.Service1Behavior" 
     name="Service.SearchService"> 
     <clear /> 
     <endpoint binding="basicHttpBinding" bindingConfiguration="WsHttpMtomBinding" 
      contract="Service.ISearchService" listenUriMode="Explicit"> 
      <identity> 
      <dns value="localhost" /> 

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

     </endpoint> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8731/Service/Service1/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
+0

Je pense que vous regardez ce dans le mauvais sens. Peut-être que ce dont vous avez besoin est un contrat de service pour l'interface IUserService avec plusieurs contrats d'exploitation pour gérer les méthodes de SearchUsers et CreateUser. –

+0

Jose: ISearchUser propose 4 méthodes pour rechercher des utilisateurs basés soit sur une ancienne base de données ancienne, dont le service est effectué par un autre service web ... A mon avis c'est un cluster%^* & mais je travaille comme on me le demande. Par conséquent j'ai pensé, je crée une nouvelle interface ICreateUser qui exposera des méthodes à createuser, updateuser, removeuser –

Répondre

0

Vous pouvez étendre votre classe de service actuelle qui met en œuvre ISearchUser et laissez-le mettre en œuvre ICreateUser ainsi - dans ce cas, vous pouvez ajouter un deuxième point final à votre configuration de service :

<services> 
    <service name="Service.SearchService" 
      behaviorConfiguration="Service.Service1Behavior"> 
    <host> 
     <baseAddresses> 
      <add baseAddress="http://localhost:8731/Services/" /> 
     </baseAddresses> 
    </host> 
    <endpoint 
      address="SearchUser" 
      binding="basicHttpBinding" bindingConfiguration="WsHttpMtomBinding" 
      contract="Service.ISearchService"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint 
      address="CreateUser" 
      binding="basicHttpBinding" bindingConfiguration="WsHttpMtomBinding" 
      contract="Service.ICreateUserService"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

Une chose que la plupart ne fonctionne pas probablement dans votre cas est le fait que vous choisissez « basicHttpBinding » comme obligatoire, mais le bindingConfiguration semble indiquer WsHttpBidning ..... ceux qui doivent correspondre et ainsi devrait probablement être:

<endpoint 
    address="CreateUser" 
    binding="basicHttpBinding" bindingConfiguration="basicHttpMtomBinding" 
    contract="Service.ICreateUserService"> 

Marc

+0

marc_s: a suivi votre recommandation. Le code compile et l'exécute fait apparaître l'hôte de service WCF et c'est l'erreur. System.InvalidOperationException: le nom du contrat 'Service.IRegisterationService' est introuvable dans la liste des contrats implémentés par le service 'SearchService'. à System.ServiceModel.Description.ConfigLoader.LookupContract (String contractName, String serviceName) at ... –

+0

Vous ne savez pas si cela vous donne des informations supplémentaires. faites un clic droit sur app.config et choisissez éditer la configuration de wcf. Apporte l'interface utilisateur. Développez 'services' et faites un clic droit sur 'service.searchservice'. Puis cliquez sur '...' sous le nom et choisissez la DLL compilée dans le répertoire bin. Il y a 2 types de services que je peux choisir –

+0

Votre classe "SearchService" implémente-t-elle réellement le contrat "Service.IRegistrationService" ?? –

Questions connexes