2010-07-02 4 views
2

Je reçois cette erreur WCF intermittente:erreur WCF intermittente: Collection contient déjà une adresse avec le schéma http

Cette collection contient déjà une adresse avec le schéma http. Il peut y avoir au plus une adresse par schéma dans cette collection. Nom du paramètre: item

J'ai essayé différentes solutions en passant par googling around et stackoverflow et elles fonctionnent pendant un certain temps jusqu'à ce que l'erreur réapparaisse, puis j'essaye une autre solution. C'est vraiment frustrant. En ce moment, tout cela est voodoo pour moi car je ne comprends pas pourquoi cela se passe. Il semble que si je touche le fichier webconfig et le sauvegarde, l'erreur disparaît. Je ne sais pas si cela le provoque, mais mon webconfig est imbriqué en ce qu'il vit sous un dossier webservices spécial. Aucune suggestion?

+0

Quels sont le contenu de votre groupe de configuration system.servicemodel? –

Répondre

0

Si vous avez plusieurs points de terminaison de base http (c'est-à-dire WsHttpBinding et BasicHttpBinding) et que vous tentez de les ajouter en même temps, vous obtiendrez cette erreur.

+0

J'utilise seulement WsHttpBinding –

+0

Avez-vous deux adresses http alors? Si c'est le cas, essayez de les héberger séparément et pas dans un même Uri []. – mrtaikandi

+0

Merci Mohammadreza. On dirait que c'est ce que je dois faire. J'ai un sous-dossier appelé webservices qui contient un web.config distinct. Il contient tous les paramètres WCF. –

2

Jetez un oeil à la façon dont vos liaisons IIS sont définies/configuré dans le fichier de l'IIS situé à ...

C:\Windows\System32\inetsrv\config\applicationHost.config

Trouvez votre chemin à la section Sites site-bindings, alors regardez pour les fixations qui ont le même protocole défini. Exemple:

<binding protocol="http" bindingInformation="*:80:" /> 
<binding protocol="net.tcp" bindingInformation="8081:*" /> 
<binding protocol="net.pipe" bindingInformation="*" /> 
<binding protocol="net.msmq" bindingInformation="localhost" /> 
<binding protocol="msmq.formatname" bindingInformation="localhost" /> 
<binding protocol="https" bindingInformation="*:443:" /> 
<binding protocol="net.tcp" bindingInformation="9000:*" /> 

Notez qu'il existe deux liaisons pour le protocole "net.tcp". La configuration par exemple ci-dessus va jeter l'erreur suivante:

This collection already contains an address with scheme net.tcp. There can be at most one address per scheme in this collection. Paramter name: item

J'ai personnellement vécu cette erreur lorsque j'ai ajouté le protocole net.tcp en utilisant l'invite de commande (par opposition à IIS Manager):

%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol-'net.tcp',bindinginformation-'9000:*']

Questions connexes