none
Pegar IP do usuário

    Question

  • Bom dia.

     

    Eu tenho um sistema em ASP.NET 2.0 usando o C# onde os representantes passam pedidos pela web.

    Existe um módulo onde este representante tem a opção de aceitar a comissão ou não. Nesta ação, além de outras informações, eu preciso pegar também o IP da máquina do representante e gravar no meu banco. Como eu faço isso??

     

    Aguardo um retorno.

     

    Atenciosamente,

     

    Alex

    Wednesday, November 07, 2007 11:13 AM

Answers

  • Se esses computadores estão em rede, você sempre irá pegar o IP do Gatway.

     

    Se você quer pegar realmente os IPs locais, tente algo assim:

     

    Code Block

    namespace Rede
    {
        using System;
        using System.Net;
       
        public class DNSUtility
        {
            public static int Main (string [] args)
            {
           
              String strHostName = String.Empty;
              if (args.Length == 0)
              {
                  // Pega o IP da máquina local
                  // Pega o Host name.
                  strHostName = Dns.GetHostName ();
                  Console.WriteLine ("Nome da máquina local: " +  strHostName);
              }
              else
              {
                  strHostName = args[0];
              }
             
              // Usando o hostname, pega o IP na lista
              IPHostEntry ipEntry = Dns.GetHostByName (strHostName);
              IPAddress [] addr = ipEntry.AddressList;
             
              for (int i = 0; i < addr.Length; i++)
              {
                  Console.WriteLine ("IP {0}: {1} ", i, addr[i].ToString ());
              }

     

    Console.Read();


              return 0;
            }   
         }
    }

     

     

    O código é .NET 1.1 e funciona perfeitamente tb no 2.0.

     

    A aplicação ai é aplicação console mas é perfeitamente adaptável a uma aplicação ASP .NET.

     

    O intuito do exemplo é somente ilustrar a lógica.

     

    Abraço
    Wednesday, November 07, 2007 1:41 PM

All replies

  • Alex,

     

    tente:

     

    Code Block
    String IP = Request.UserHostAddress;

     

     


    Ricardo Oneda
    http://oneda.mvps.org/blog

    • Proposed as answer by Apostolo Wednesday, May 06, 2009 6:55 PM
    Wednesday, November 07, 2007 12:44 PM
  •  

    Ricardo, eu já tinha tentado usar este código, mas ele não me retorna o ip correto.

    Eu fiz um teste e trás um IP diferente do meu.

    Na verdade já estou gravando no banco o IP utilizando este comando, mas 90% dos IPs gravados são iguais. Como se todos estivesse utilizando o mesmo computador. Um ou outro grava diferente.

    Porque acontece isso?

    Wednesday, November 07, 2007 12:59 PM
  • Se esses computadores estão em rede, você sempre irá pegar o IP do Gatway.

     

    Se você quer pegar realmente os IPs locais, tente algo assim:

     

    Code Block

    namespace Rede
    {
        using System;
        using System.Net;
       
        public class DNSUtility
        {
            public static int Main (string [] args)
            {
           
              String strHostName = String.Empty;
              if (args.Length == 0)
              {
                  // Pega o IP da máquina local
                  // Pega o Host name.
                  strHostName = Dns.GetHostName ();
                  Console.WriteLine ("Nome da máquina local: " +  strHostName);
              }
              else
              {
                  strHostName = args[0];
              }
             
              // Usando o hostname, pega o IP na lista
              IPHostEntry ipEntry = Dns.GetHostByName (strHostName);
              IPAddress [] addr = ipEntry.AddressList;
             
              for (int i = 0; i < addr.Length; i++)
              {
                  Console.WriteLine ("IP {0}: {1} ", i, addr[i].ToString ());
              }

     

    Console.Read();


              return 0;
            }   
         }
    }

     

     

    O código é .NET 1.1 e funciona perfeitamente tb no 2.0.

     

    A aplicação ai é aplicação console mas é perfeitamente adaptável a uma aplicação ASP .NET.

     

    O intuito do exemplo é somente ilustrar a lógica.

     

    Abraço
    Wednesday, November 07, 2007 1:41 PM
  • Olá! Sou novato tentando ajudar, então corrijam-me se estiver errado! Wink

    Eu precisei mostrar o IP do usuário na página num label, então usei o seguinte código dentro do page_load:

            Dim Ip As String
            Ip = Request.UserHostAddress
            Me.ipLabel.Text = "Seu IP é: " & Ip

    ---

    Verifique se funciona.

    []'s
    Monday, November 12, 2007 7:15 AM
  • Obrigado, mas desse jeito não está trazendo o ip correto. Funcionou com a solução postada anteriormente.

     

    Abraço.

    Monday, November 12, 2007 1:31 PM
  • Oi Alisson, estou com um problema parecido com o do nosso amigo, mas além do ip, gostaria de pegar o nome do usuário logado .
    gostaria de saber como implementar esta sua solução...
    o usário logado na redee eu sei que é usando o activie directory... mas ainda estou lendo sobre o assunto.
    poderia me dar uma dica?
    eu precisaria pegar o ip para poder enviar um email.
    abraços
    Lissandra
    Wednesday, October 01, 2008 8:05 PM
  • Opa

    vc precisa do ip local ou ip externo?

    quando a pegar o usuário logado, pesquise sobre membership, se nao me engano tem como usa-lo com ad tbem.

    ate mais

     

    Thursday, October 02, 2008 1:32 AM
  • Oi, Lissandra.

    Se a aplicação esta usando autenticação integrada, você pode pegar o nome do usuário assim:

    Code Snippet


    using System.Security.Principal;MessageBox.Show(a.ToString());


    string a;

    a = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();




    Tente ai e nos fale.

    Abraço

    Thursday, October 02, 2008 12:46 PM