2013-07-15 2 views
3

J'essaie d'obtenir l'adresse IP publique du client en utilisant l'application asp.net (mvc4). quand j'utilise HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] si me donne une chaîne vide, et quand j'utilise HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] il envoie une chaîne comme ceci ":: 1" (sans guillemets doubles). est-il lié à IIS express ??? comment puis-je obtenir l'IP du client en utilisant asp.net ??asp.net HttpContext.Current.Request.ServerVariables ne fonctionne pas

merci.

+1

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') –

Répondre

4

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.

+0

merci mon pote, mon code est assez similaire à la deuxième partie de votre code. Je vais le déployer et voir. – dafriskymonkey

+0

Je me demande aussi s'il y a un serveur qui peut me donner l'adresse IP du client, en faisant un appel ajax? – dafriskymonkey

+0

Je viens de le déployer et c'est super, merci beaucoup tombala. – dafriskymonkey

Questions connexes