est ici la méthode que je l'utilise pour obtenir l'adresse IP:
private static string GetIPAddress()
{
try
{
if (System.ServiceModel.OperationContext.Current != null)
{
var endpoint = OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
return endpoint.Address;
}
if (System.Web.HttpContext.Current != null)
{
// Check proxied IP address
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + " via " +
HttpContext.Current.Request.UserHostAddress;
else
return HttpContext.Current.Request.UserHostAddress;
}
}
catch { }
return "Unknown";
}
Notez que la première section est pour les services WCF puisque ce code est de mon code d'enregistrement qui est partagée par les deux projets de WCF et Web, de sorte que vous pourrait juste besoin de la deuxième section. Vous n'obtiendrez pas d'IP si vous frappez votre hôte local pendant le développement - vous obtiendrez ":: 1" comme vous l'avez remarqué. Mais vous l'obtiendrez s'il est déployé sur un serveur.
Vous exécutez à la fois le client et le serveur sur la même machine, et non via un proxy. Pas de proxy == Non HTTP_X_FORWARDED_FOR. Même machine, ':: 1' est l'adresse de bouclage (a.k.a' localhost') –