188 votes

Erreur de démarrage du service WCF "Cette collection contient déjà une adresse avec le schéma http".

J'ai construit une application web contenant un contrat de service WCF et un contrôle Silverlight qui fait des appels à ce service WCF. Sur mes serveurs de développement et de test, cela fonctionne parfaitement.

Lorsque je déploie sur notre serveur live et que j'exécute l'application, j'obtiens une exception de type System.ServiceModel.ServiceActivationException qui indique que le service ne peut pas être activé en raison d'une exception lors de la compilation. L'exception est :

Cette collection contient déjà une adresse avec le schéma http. Il peut y avoir au maximum une adresse par schéma dans cette collection.

J'ai lu que cette exception peut être levée si le site Web a plus d'un en-tête d'hôte, ce qui est vrai sur notre serveur en direct. Apparemment, les services WCF hébergés dans IIS ne peuvent avoir qu'une seule adresse de base. Comment puis-je contourner ce problème ?

2voto

Eric Points 168

J'ai eu ce problème, et la cause était plutôt bête. J'essayais la démo de Microsoft concernant l'exécution d'un ServiceHost à partir d'un exécutable en ligne de commande. J'ai suivi les instructions, y compris l'endroit où il est indiqué d'ajouter le service approprié (et l'interface). Mais j'ai obtenu l'erreur ci-dessus.

Il s'avère que lorsque j'ai ajouté la classe de service, VS a automatiquement ajouté la configuration à l'app.config. Et la démo essayait d'ajouter cette information aussi. Puisque c'était déjà dans la configuration, j'ai enlevé la partie démo, et ça a marché.

0voto

jimas13 Points 16

J'ai rencontré la même erreur sur un ancien serveur Exchange 2010. Un service (Exchange mailbox replication service) donnait l'erreur ci-dessus et le processus de migration ne pouvait pas être poursuivi. En cherchant sur Internet, j'ai trouvé ceci lien qui a déclaré ce qui suit :

Exchange GRE ne s'ouvre pas lorsqu'il est installé pour la première fois ou si des modifications sont apportées au serveur IIS. Il échoue avec une erreur de snap-in et lorsque vous essayez d'ouvrir la page du snap-in, le contenu suivant s'affiche :

This collection already contains an address with scheme http.  There can be at most one address per scheme in this collection. If your service is being hosted in IIS you can fix the problem by setting 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' to true or specifying 'system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters'."

Cause : Cette erreur se produit parce que le port http numéro 443 est déjà utilisé par une autre application et que le serveur IIS n'est pas configuré pour gérer la liaison multiple au même port.

Solution : Configurer le serveur IIS pour qu'il gère les liaisons de ports multiples. Contactez le fournisseur (Microsoft) pour le configurer.

Comme ces services étaient offerts à partir d'un serveur Web IIS, la vérification des liens sur le site racine a permis de résoudre le problème. Quelqu'un avait modifié les liens du site, définissant des règles qui se chevauchaient et perturbaient les services.

La correction des liaisons correctes a résolu le problème, dans mon cas, et je n'ai pas eu à configurer le Web.Config.

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