2010-03-09 9 views
3

Comment puis-je obtenir l'adresse du serveur qui a été utilisée pour une requête avec plusieurs adresses IP?Obtention de l'adresse IP du serveur dans WCF?

E.g.

  • le serveur a les adresses 10.0.0.1 et 10.0.0.2. Lors du traitement de la demande, le service serveur doit savoir si 10.0.0.1 ou 10.0.0.2 a été utilisé par le client pour se connecter à ce service.

Jusqu'à présent, je ne trouve que

  • OperationContext.Current.EndpointDispatcher.EndpointAddress et OperationContext.Current.Channel.LocalAddress contiennent l'adresse de .config (par exemple localhost)

  • OperationContext.Current.IncomingMessageProperties.Via contient l'URL que le client utilisé pour se connecter au serveur (mais ceci pourrait juste être un nom du dossier d'hôtes de clients).

EDIT: toujours à la recherche d'une solution ...

+0

Voulez-vous dire le client entrant ? – rerun

+0

Non, j'ai besoin de l'adresse IP du serveur. Par exemple. le serveur a 10.0.0.1 et 10.0.0.2 - quelle adresse le client a-t-il utilisé pour se connecter au serveur? – laktak

+0

Est-ce que c'est dans une situation d'équilibrage de charge? Y a-t-il plusieurs cartes réseau dans ce serveur? – rerun

Répondre

0

Sans aucune aide supplémentaire et le travail de votre côté, je ne pense pas que vous pouvez obtenir cela.

Le client envoie un message à une URL: le message est sérialisé, envoyé, traité et renvoyé. Il n'y a pas de «connexion permanente» que vous pourriez interroger, il n'y a rien que le serveur puisse vous dire. Ce que vous pouvez faire, c'est créer une extension Message Inspector, qui pourrait être enregistrée du côté serveur, et qui écrirait l'adresse IP locale du serveur dans un champ d'en-tête que vous pourriez ensuite inspecter côté client.

Google ou Bing pour "Inspecteurs WCF message" et vous devriez trouver assez peu de succès - certains des meilleurs:

+0

Désolé, ma question n'était pas assez claire - j'ai besoin de l'information sur le serveur. S'il vous plaît voir mes modifications. – laktak

Questions connexes