2009-05-26 7 views
1

j'ai quelques questions sur le fichier de configuration ci-dessous:WCF, en changeant le baseAdress d'un point de terminaison

<system.serviceModel> 
    <bindings /> 
    <services> 
    <service behaviorConfiguration="WcfReporting.Service1Behavior" 
      name="WcfReporting.Service1"> 
     <endpoint address="" 
       binding="basicHttpBinding" bindingConfiguration="" 
       contract="WcfReporting.IService1"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
     <host> 
     <baseAddresses> 
      <add baseAddress="net.tcp://localhost:5050/" /> 
     </baseAddresses> 
     </host> 
    </service> 
    </services> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="WcfReporting.Service1Behavior" > 
     <!-- To avoid disclosing metadata information, set the value below to false 
      and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpGetEnabled="true"/> 
     <!-- To receive exception details in faults for debugging purposes, 
      set the value below to true. Set to false before deployment to 
      avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 
  1. Pourquoi lorsque je tape sur F5 pour redémarrer le service, le service commence par cette URL http://localhost:2752/. .. pourquoi pas 5050 comme je l'ai spécifié dans baseAddresses.

  2. Comment ajouter une autre extrémité. J'ai essayé avec adresse de noeud final = «/Address2 » binding = « basicHttpBinding » contrat = « WcfReporting.IService1 » />

comment devrais-je être en mesure d'accéder au service, non seulement avec http://localhost/VirtualDir/ mais aussi avec http://localhost/VirtualDir/address2 ou Comment ça marche?

Répondre

0

Si vous utilisez un serveur Web (tel que Cassini ou IIS) pour héberger votre service WCF, l'adresse de base sera fournie par ce serveur. Notez également que vous ne pouvez pas utiliser les liaisons TCP via HTTP. Si vous voulez pouvoir définir la propriété d'adresse de base, vous devez héberger le service vous-même (par exemple, dans le service NT, la console ou l'application Windows).

+0

merci. Donc, si j'ajoute un point de terminaison comme ceci Quand je tape F5, c'est mon service hébergé par TCP ou dois-je réellement écrire du code dans une application de console pour le faire? –

1

Comment ajouter une autre extrémité. Je essayé avec point final adresse = "/ Address2" liaison = "basicHttpBinding" contrat = "WcfReporting.IService1" />

Les adresses que vous spécifiez dans ce point de terminaison doivent être locale et relative - par exemple il suffit de spécifier

<endpoint address="Address2" 
      binding="basicHttpBinding" 
      contract="WcfReporting.IService1" /> 

et cela va créer un point final à l'adresse complète de

net.tcp://localhost:5050/Address2 

Mais comme Darin a déjà souligné - si vous utilisez IIS/WAS pour héberger votre service, le répertoire virtuel où votre fichier * .svc sera prioritaire et les adresses de base spécifiées seront ignorées. Pour utiliser réellement les adresses de base, vous devez héberger le service dans une application de console ou un service Windows.

Marc

3

Si vous hébergez dans Cassini à partir de Visual Studio 2005 ou plus tard, vous pouvez spécifier le port à l'aide du projet/Propriétés/Web/Utilisation de développement Visual Studio Serveur/Port spécifique.

Par défaut, le port sera attribué automatiquement - ce qui n'est pas très utile pour les services Web car vos clients voudront probablement utiliser une URL fixe.

Vous n'avez pas besoin de spécifier < baseAddresses> dans le fichier de configuration lors de l'hébergement dans IIS ou Cassini - l'URL de base est fournie par le serveur Web. L'élément < baseAddresses> est utilisé lors de l'auto-hébergement.

Questions connexes