34 votes

Comment corriger "n'a pas pu trouver une adresse de base qui correspond au schéma http" ... dans WCF

Je suis en train de déployer un service WCF pour mon serveur, hébergé dans IIS. Naturellement, il fonctionne sur ma machine :)

Mais quand je le déployer, j'obtiens l'erreur suivante:

Cette collection contient déjà une adresse http de schéma. Il peut y être au plus une seule adresse par le jeu dans cette collecte.

Googler sur ce, je trouve que je dois mettre une serviceHostingEnvironment élément dans le web.fichier de configuration:

<serviceHostingEnvironment>
  <baseAddressPrefixFilters>
    <add prefix="http://mywebsiteurl"/>
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>

Mais une fois que j'ai fait cela, je reçois le texte suivant:

Impossible de trouver une adresse de base qui les matchs de régime http pour le point de terminaison avec la liaison BasicHttpBinding. Enregistré adresse de base, les régimes de [https].

Il semble qu'il ne sait pas ce que l'adresse de base est, mais comment dois-je le préciser? Voici la section pertinente de mon web.fichier de configuration:

<system.serviceModel>
  <serviceHostingEnvironment>
    <baseAddressPrefixFilters>
      <add prefix="http://mywebsiteurl"/>
    </baseAddressPrefixFilters>
  </serviceHostingEnvironment>

  <behaviors>
    <serviceBehaviors>
      <behavior name="WcfPortalBehavior">
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="true"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <bindings>
    <basicHttpBinding>
      <binding name="BasicHttpBinding_IWcfPortal"
               maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
               receiveTimeout="00:10:00" sendTimeout="00:10:00"
               openTimeout="00:10:00" closeTimeout="00:10:00">
        <readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647"
               maxStringContentLength="2147483647"/>
      </binding>
    </basicHttpBinding>
  </bindings>

  <services>
    <service behaviorConfiguration="WcfPortalBehavior" name="Csla.Server.Hosts.Silverlight.WcfPortal">
      <endpoint address="" binding="basicHttpBinding" contract="Csla.Server.Hosts.Silverlight.IWcfPortal"
      bindingConfiguration="BasicHttpBinding_IWcfPortal">
      </endpoint>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>
  </services>
</system.serviceModel>

Quelqu'un peut-il faire la lumière sur ce qui se passe et comment le résoudre?

Merci!

Craig

41voto

dale Points 201

Essayez de changer le mode de sécurité de "Transport" à "aucun" à partir de

4voto

tomasr Points 9990

Y a-t-il une chance que votre IIS soit configuré pour exiger SSL sur les connexions à votre site / application?

4voto

LiborBes Points 61

Si vous souhaitez utiliser baseAddressPrefixFilters dans web.config, vous devez également configurer IIS (6). Cela m'a aidé:

1 / Dans IIS trouvez votre site. 2 / Propriétés / Site Web (onglet) / Adresse IP -> bouton Avancé 3 / Ajouter un nouvel en-tête d'hôte sur le même port que vous utiliserez dans web.config.

4voto

ZaChickster Points 160

J'ai eu à faire deux choses à la configuration IIS du site/de l'application. Ma question avait à faire avec obtenir le net.tcp de travail dans un Site Web IIS App:

D'abord:

  1. Clic droit sur le IIS nom de l'Application.
  2. Gérer Le Site Web
  3. Paramètres Avancés
  4. Ensemble de protocoles Activés pour être "http net.tcp"

Deuxième:

  1. Dans le menu Actions, sur le côté droit du Manager, cliquez sur Liaisons...
  2. Cliquez Sur Ajouter
  3. Changement de type de "net.tcp"
  4. Définir les informations de liaison à {ouvrir le port numéro}:*
  5. OK

2voto

Ákos Points 21

Seule la première adresse de base de la liste sera prise en charge (provenant d'IIS). Vous ne pouvez pas avoir plusieurs adresses de base par schéma avant .NET4.

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