web-dev-qa-db-fra.com

WCF - Plusieurs configurations de noeud final ont été trouvées pour ce contrat - Erreur

Nous avons une application Web ASP.Net en cours d’utilisation avec WCF. service wcf hébergé en tant que service windows. Tout est bon. Nous avons ensuite apporté une modification afin que le contrat de service ait un espace de noms différent (De Namespace1.IserviceContract à Namespace2.IserviceContract). Après le changement, nous avons déployé sur le serveur et avons obtenu l'erreur suivante lorsque nous essayons d'instancier l'objet de service.

    System.InvalidOperationException: An endpoint configuration section for contract 'Namespace2.IserviceContract' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name.

Generated: Fri, 06 Jul 2012 21:02:56 GMT


System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.InvalidOperationException: An endpoint configuration section for contract 'Namespace2.IserviceContract' could not be loaded because more than one endpoint configuration for that contract was found. Please indicate the preferred endpoint configuration section by name.
   at System.ServiceModel.Description.ConfigLoader.LookupChannel(String configurationName, String contractName, Boolean wildcard)
   at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
   at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
   at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
   at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
   at System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
   at System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
   at System.ServiceModel.EndpointTrait`1.CreateChannelFactory()
   at System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait)
   at System.ServiceModel.ClientBase`1.InitializeChannelFactoryRef()
   at System.ServiceModel.ClientBase`1..ctor()
   at TestApplication.ManagementWrapper.VerifyAuthentication(Int32 appId, String Token)
   at TestApplication.VerifyAuthentication(String tokenstring)

nous avons effectué une recherche sur ce problème et constaté que ce type si une exception apparaît si deux points de terminaison client sont définis dans notre fichier web.config. Cependant, nous sommes certains de ne définir qu'un seul point de terminaison client. Plus sur cette exception n'apparaît que sur le serveur. les travaux locaux bien. voici notre modèle de service:

<system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="NetTcpBinding_Management" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="4194304" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="32768" maxNameTableCharCount="2147483647" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
      <endpoint address="net.tcp://servername:9010/Management/service/ManagementService" binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Management" contract="Namespace2.IserviceContract" name="NetTcpBinding_IserviceContract" />
    </client>
  </system.serviceModel>

nous avons également essayé de redémarrer IIS et du pool d'applications. Toujours obtenir la même exception.

15
matmat

Essayez de rechercher dans votre fichier web.config un autre utilisateur utilisant l'adresse Web comme service de gestion. Recherchez également dans le fichier Web.config toute référence à l'ancien espace de noms (contract = "Namespace1.IserviceContract"). N'oubliez pas de rechercher des fichiers .config supplémentaires. Ce petit eu m'a déjà brûlé.

23
tgolisch

Quel que soit le protocole appelé, comme base, net.tcp ou wshttp, cette adresse doit être dans le fichier de configuration Web, supprimer les autres adresses de client section dans le fichier app.config. Dans mon cas, le service est appelé htp: // nom_ordinateur: 700/test.svc mais dans la section client, il y avait des adresses avec les configurations net.tcp et wshttp, ces adresses ont été supprimées et le problème est résolu pour moi.

3
user2824502

Faites un clic droit sur le fichier svc de votre service wcf et cliquez sur Voir le balisage.

puis modifiez également l'espace de noms. Cela devrait bien fonctionner alors.

0
vinod8812

Si tout dans votre web.config semble être correct, cette erreur peut être provoquée par une autre application sur le même serveur. J'ai passé plusieurs jours à résoudre un problème similaire.

Dans mon cas, un grand nombre de services WCF ont été déployés dans l'environnement en tant qu'applications Web dans IIS sous un seul site Web, comme suit.

/Root Website
    /Service1
    /Service2
    /Service3
    /ServiceX

L'un des services enfants a été déployé par erreur dans le dossier physique du site Web racine plutôt que dans son propre dossier physique. Ce mauvais déploiement contenait une définition de point de terminaison client commune à tous les services et entraînant la rupture de tous les services enfants. Apparemment, le même point de terminaison client ne peut pas être utilisé par le site Web parent et une application Web enfant.

La suppression du point de terminaison client du site Web racine a résolu le problème pour moi.

0