2009-02-12 5 views
2

J'essaie d'apprendre comment construire des services RESTful avec WCF en recréant le projet sur this blog post par Anthony Steele. Il utilise le code XML suivant dans sa configuration pour configurer le point de terminaison pour le service.Pourquoi mon service WCF ne répond pas à mon paramètre baseAddress dans web.config?

<host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8080/greeter"/> 
     </baseAddresses> 
    </host> 

Cependant, lorsque je tente de faire la même chose dans le web.config de mon site Web ASP.NET 3.5, je suis incapable de naviguer à mon service. Voici le XML que je utilise:

<system.serviceModel> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="GreeterBehavior"> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
    <services> 
    <service behaviorConfiguration="GreeterBehavior" name="Greeter"> 
     <host> 
     <baseAddresses> 
      <add baseAddress="http://localhost:49268/TestREST/webapi/services/greeter"/> 
     </baseAddresses> 
     </host> 
     <endpoint address="" binding="wsHttpBinding" contract="IGreeter"> 
     <identity> 
      <dns value="localhost"/> 
     </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
    </service> 
    </services> 
</system.serviceModel> 

J'imagine que ma configuration me permettrait de naviguer vers http://localhost:49268/TestREST/webapi/services/greeter et voir mon service. Tout ce que je reçois est un message de ressource non trouvé - ai-je raté quelque chose?

Modifier: Une partie de mon problème était que ma liaison était wsHttpBinding. Utiliser webHttpBinding m'a permis d'utiliser le service correctement - sauf que la section de configuration de baseAddress n'a toujours aucun effet.

Répondre

4

Mon intuition est que le point de terminaison de service n'est pas créé avec succès.

Dans l'attribut "nom" du service, vous n'incluez pas le nom FQN (Fully Qualified Name) du type de service. En second lieu, dans l'attribut "contrat" ​​du noeud final, vous n'incluez pas le FQN dans le type de contrat. Par contre, cela PEUT être un problème de port. Par contre, cela peut être un problème de port. Pour être sûr, essayez d'exécuter le fichier WcfTestClient.exe inclus dans la distribution Visual Studio 2008. Si vous pouvez vous connecter à http://localhost:49268/TestREST/webapi/services/greeter/mex, alors vous savez que ce n'est pas un problème de port.

Supposons que vous puissiez vous connecter via MEX, puis essayez d'appliquer certaines des méthodes, qui seraient vraisemblablement mappées sur http://localhost:49268/TestREST/webapi/services/greeter.

Si vous utilisez le serveur, voir quelques détails précieux sur HttpCfg.exe ici: WCF ServiceHost basicHttpBinding 503 error

Si vous avez besoin de plus de détails sur WcfTestClient, les chercher ici: Is it possible to make the WcfTestClient work for custom transport channels?

Just In Case : copier l'exemple verbatim et vérifier qu'il fonctionne comme défini, y compris le fichier de configuration, avant d'en faire le moindre écart.

Questions connexes