none
GET IP asp.net RRS feed

  • Pergunta

  • pessoal, estou tentando pegar o IP local que esta rodando o sistema web com a chamada da propriedade "Request.UserHostAddress" que esta me retornando "::1", porém precisava do IP da máquina, pois irei criar algumas verificações com base nele.

    Qual seria a alternativa para eu conseguir o IP de quem esta acessando o sistema, mesmo que esteja acessando da máquina local?

    terça-feira, 6 de novembro de 2012 18:13

Respostas

  • sim, essa foi mais ou menos o que implementei, mas achei que tivesse alguma alternativa própria de c#

    private string GetIp()
            {
                string ip = Request.UserHostAddress;
    
                if (ip.Equals("::1"))
                    ip = GetLocalIP();
                return ip;
            }
    
    public string GetLocalIP()
            {
                IPHostEntry _IPHostEntry = Dns.GetHostEntry(System.Net.Dns.GetHostName());
                
                IPAddress ip = _IPHostEntry.AddressList.SingleOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
    
                return ip.ToString();            
            }

    • Marcado como Resposta Pablotdv quarta-feira, 7 de novembro de 2012 14:46
    quarta-feira, 7 de novembro de 2012 10:52

Todas as Respostas

  • Pablo, Boa tarde

    Se você estiver fazendo esse teste da sua maquina, isso pode acontecer, pois ele esta pegando o IP do Localhost, tente publicar sua pagina em um servidor e testar


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     


    terça-feira, 6 de novembro de 2012 19:34
  • sim, eu sei que no servidor irá pegar o ip, mas preciso que quando estiver rodando na minha máquina eu tenha o IP local.
    terça-feira, 6 de novembro de 2012 20:42
  • Pablo,

    Sinceramente não sei se é possível, mas porque você não usa o valor que ele mostra como se fosse o IP Local? é apenas para teste não é?


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    terça-feira, 6 de novembro de 2012 21:54
  • é que estou implementando um modelo de login que leva em consideração o IP.

    então, estou fazendo uma verificação com base no IP e da forma que vai quando o sistema esta sendo testado localmente, não consigo validar este IP.

    quarta-feira, 7 de novembro de 2012 00:30
  • Entendi, o que eu quis dizer foi você fazer mais ou menos assim na hora de pegar o ip se for igual a ";;1" você troca por 127.0.0.1


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    quarta-feira, 7 de novembro de 2012 08:59
  • sim, essa foi mais ou menos o que implementei, mas achei que tivesse alguma alternativa própria de c#

    private string GetIp()
            {
                string ip = Request.UserHostAddress;
    
                if (ip.Equals("::1"))
                    ip = GetLocalIP();
                return ip;
            }
    
    public string GetLocalIP()
            {
                IPHostEntry _IPHostEntry = Dns.GetHostEntry(System.Net.Dns.GetHostName());
                
                IPAddress ip = _IPHostEntry.AddressList.SingleOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
    
                return ip.ToString();            
            }

    • Marcado como Resposta Pablotdv quarta-feira, 7 de novembro de 2012 14:46
    quarta-feira, 7 de novembro de 2012 10:52
  • Pelo que pesquisei na net essa seria a melhor saida...


    Bruno Viegas D. Ribeiro

    Analista Desenvolvedor de Sistemas
    www.brunoviegas.com.br
     

    quarta-feira, 7 de novembro de 2012 11:04