On m'a dit que wsHttpBinding ne prend pas en charge les clients plus anciens qui ont encore besoin d'utiliser une version antérieure de SOAP. Je souhaite ajouter un point de terminaison BasicHttpBinding dans la même application de service WCF afin que les clients puissent utiliser l'un ou l'autre point de terminaison en fonction de la technologie qu'ils exécutent. Je suis confus quant à ce que l'adresse à utiliser pour chacun d'eux. Le wsHttpBinding par défaut n'a pas d'adresse. Quelle devrait être l'adresse pour le point de terminaison BasicHttpBinding? Ne devrait pas l'adresse pour le wsHttpBinding être (pour mon exemple) http://localhost/WcfService1/Service1.svc?WCF wsHttpBinding et BasicHttpBinding dans la même application de service WCF
Répondre
Il y a deux choses que vous devez considérer ici:
si vous hébergez dans IIS (ou WAS dans le cadre de IIS7), vous ne pouvez pas définir une adresse de base - l'adresse de base pour votre service sera le répertoire virtuel où le fichier
MyService.svc
vit. Vous pouvez toujours définir des adresses relatives, bien queSi vous hébergez vous-même, vous ajouterez généralement des adresses de base dans votre configuration, de sorte que vous pouvez vous éviter d'épeler l'adresse complète tout le temps (mais vous pouvez - si vous souhaitez le faire).
Donc, si vous avez votre MyService.svc
dans un répertoire virtuel appelé MyApp
sur votre machine localhost
, puis utilisez cette config:
<service name="MyService" behaviorConfiguration="Default">
<endpoint
address="wsHttp"
binding="wsHttpBinding"
contract="IMyService" />
<endpoint
address="basic"
binding="basicHttpBinding"
contract="IMyService" />
</service>
alors votre « ancienne » service basicHttp sera accessible à :
http://localhost/MyApp/MyService.svc/basic
et votre nouveau service axé sur wsHttp sera accessible à:
http://localhost/MyApp/MyService.svc/wsHttp
Vous pouvez nommer ces adresses relatives (quelque chose après .../MyApp/MyService.svc
) comme vous le souhaitez - assurez-vous simplement qu'elles sont différentes les unes des autres.
L'hébergement dans IIS -> emplacement (répertoire virtuel) de votre fichier * .svc devient votre adresse de base.
Si vous auto-host votre service à l'intérieur d'une application de la console ou un service Windows NT, vous obtenez de définir votre base vous adresses:
<services>
<service name="MyService" behaviorConfiguration="Default">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8185/Services/" />
</baseAddresses>
</host>
</service>
</services>
Maintenant, dans ce cas, votre "style ancien" service basicHttp sera accessible à:
http://localhost:8185/Services/basic
et votre nouveau service axé sur wsHttp sera accessible à:
http://localhost:8185/Services/wsHttp
Vous pouvez définir une adresse de base pour chacun des transports, par ex. un pour http: //, un pour net.tcp: // et ainsi de suite.Bien sûr, si vous le devez vraiment, vous pouvez également définir vos adresses complètes à l'intérieur de votre élément <endpoint>
pour chacun des points de service - cela vous donne une flexibilité totale (mais ne fonctionne que dans des scénarios d'auto-hébergement).
Marc
Dans WCF vous avez une adresse de base et une adresse enpoint, dans votre cas, vous pouvez faire quelque chose comme ceci:
<service name="WcfEndpoints.Service1" behaviorConfiguration="WcfEndpoints.Service1Behavior">
<!-- Service Endpoints -->
<endpoint address="new" binding="wsHttpBinding" contract="WcfEndpoints.IService1" />
<endpoint address="old" binding="basicHttpBinding" contract="WcfEndpoints.IService1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
Notez que vous aurez besoin de travail supplémentaire pour le point final de basicHttpBinding travailler avec les anciens (asmx) clients
- 1. WCF basichttpbinding routage netTcpBinding
- 2. WCF wsHttpBinding et désactiver l'accès anonyme
- 3. Pourquoi seulement basicHttpBinding avec silverlight et wcf?
- 4. La liaison WCF -wsHttpBinding utilise une session?
- 5. Quelle est la différence entre une application de service WCF et une bibliothèque de service WCF?
- 6. Problème lors de la consommation du service WCF (basicHttpBinding) dans Delphi Win32 Client
- 7. Authentification WCF et Kerberos
- 8. Problème intéressant avec WCF wsHttpBinding à travers un pare-feu
- 9. URL WSDL pour un service WCF (basicHttpBinding) hébergé dans un service Windows
- 10. Service WCF et Silverlight 3 débogage
- 11. Service WCF RESTful sur Service WCF standard
- 12. Test d'une application de service WCF
- 13. Arguments de la méthode de service WCF
- 14. Service WCF hébergé par IIS + authentification Windows dans IIS + TransportCredentialOnly/Windows auth dans basicHttpBinding
- 15. erreur service Web WCF
- 16. ASP.NET Authentifier application Web avec service WCF
- 17. Sécurité WCF dans un service Windows
- 18. url relative dans la liaison de service wcf
- 19. WCF et pare-feu
- 20. IPhone service WCF reposant
- 21. Documentation de service WCF
- 22. Service d'hébergement WCF sur un hôte de confiance partielle
- 23. Erreur de service Wcf
- 24. WCF dans un service Windows
- 25. Délégation dans le service Web WCF
- 26. Consommez service WCF avec le même nom et même espace de noms cible de BizTalk
- 27. WCF Service vs Silverlight prêt WCF
- 28. Utilisation de WCF dans une application ASP.Net et meilleures pratiques
- 29. Service WCF, comment augmenter le délai d'expiration?
- 30. Déploiement d'un service WCF
Est-il possible d'avoir votre point de point de terminaison wsHttp dans le répertoire racine et ensuite l'adresse du point d'extrémité basicHttp à la racine \ base? – EbbnFlow