2010-06-23 4 views
3

Si vous devez exposer plusieurs points de terminaison (par exemple, un avec basicHttpBinding et un autre avec netTcpBinding) pour un contrat unique dans un environnement hétérogène, sur un service hébergé par WAS, comment le faire? Tout ce que j'ai lu à propos de la configuration WAS des points de terminaison indique que les adresses de point de terminaison et d'hôte doivent rester vides car WAS est supposé résoudre automatiquement les adresses via le chemin d'accès au fichier .svc et au protocole.Points de terminaison multiples pour un contrat unique dans un service WCF hébergé par WAS?

Cependant, il semble impossible de définir un point de terminaison HTTP et un point de terminaison TCP pour le même contrat sans expliquer les adresses. Chaque tentative de la mienne jusqu'à présent m'a valu le convoité "une instance contraignante a déjà été associée à l'écoute uri" erreur.

Des idées?

Merci

+0

Il ne doit pas montrer que l'erreur si vous spécifiez une URL de base différente pour chaque point de terminaison. Pouvez-vous poster votre code de fichier de configuration ici? – decyclone

+0

@decyclone: ​​ D'après ce que j'ai lu sur MSDN, les adresses de base ne sont pas supposées être spécifiées avec WAS. WAS est censé résoudre l'adresse via le protocole et le chemin d'accès au fichier .svc. Étant donné que les deux points d'extrémité utilisent des protocoles différents, chacun doit être résolu de manière unique. Merci – user364825

Répondre

0

Pour autant que je comprends, le fichier * .svc est viable pour les protocoles HTTP, par exemple vous pouvez l'utiliser pour votre connexion basicHttpBinding. Dans ce cas, vous avez absolument raison - l'adresse de base du service et l'attribut adresse du noeud final sont ignorés - l'URI du service est définie par le nom du serveur, éventuellement le port, le répertoire virtuel où réside le fichier SVC et le nom et l'extension du Fichier SVC lui-même.

Aussi longtemps que vous n'avez pas besoin de plusieurs protocoles et points de terminaison de type HTTP différents, ce fichier SVC doit prendre en charge le trafic HTTP.

Toutefois, ces options ne s'appliquent pas aux protocoles non-http, tels que netTcpBinding. Dans ce cas, vous devez définir une adresse de point de terminaison (éventuellement en tant que chemin relatif d'une adresse de base appropriée) dans votre fichier web.config.

+0

Merci de votre réponse. Si je ne spécifie pas l'adresse de base de l'hôte, et configurez l'adresse de point de terminaison pour le point de terminaison netTcpBinding dans le fichier de configuration WAS comme "/ tcp" et envoyez une requête à net.tcp: //localhost/MyService/Service.svc/tcp, la requête semble être routée correctement. En outre, si je génère un proxy à partir de cette configuration, l'adresse du client est générée sous la forme net.tcp: //localhost/MyService/Service.svc/tcp (même adresse que précédemment). Ces deux facteurs semblent impliquer que WAS résout l'adresse de base en utilisant le protocole et le chemin vers le fichier SVC pour les liaisons TCP. – user364825

+0

@ User364825: si je comprends bien, vous devez avoir une adresse ** complète ** dans votre terminal, ou si vous voulez utiliser une adresse relative comme "/ tcp", vous devez ** avoir une adresse de base –

Questions connexes