none
Obtener IP de cliente al acceder a mi web

    Pregunta

  • Hola a todos,

    Tengo una solución que envía correos a mis clientes y lleva una imagen embebida en el correo que lanza un proceso ashx que además de realizar varias cosas, entre ellas deseo obtener la IP del cliente que abre el correo.

    Tengo un procedimiento dentro del ashx que intenta recoger la IP pero resulta que la IP que me devuelve es la del servidor donde tengo alojada mi pagina web.

    Os adjunto el código donde recojo la IP.

    Me gustaría poder contar con vuestra inestimable ayuda para saber que tengo que cambiar para que en vez de recibir la IP del servidor de alojamiento de mi web, me devuelva la IP del cliente que ha accedido.

    Sin mas y agradeciendo vuestra colaboración, y en espera de noticias vuestras al respecto, recibid un cordial saludo.

    Miguel

      Private Function GETIP() As String
            Dim res As HttpWebResponse
            Dim req As HttpWebRequest = CType(WebRequest.Create("http://checkip.dyndns.org/"), HttpWebRequest)
            Try
                res = CType(req.GetResponse(), HttpWebResponse)
            Catch ex As Exception
                MsgBox("Error ... " & ex.Message)
            End Try
          
            Dim Stream As Stream = res.GetResponseStream()
            Dim sr As StreamReader = New StreamReader(Stream)
            Return (sr.ReadToEnd())
        End Function

    miércoles, 13 de mayo de 2015 19:40

Respuestas

  • prueba este metodo mejor.usando las variables del servidor

    Public Shared Function GetIPAddress() As String
        Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
        Dim sIPAddress As String = context.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
        If String.IsNullOrEmpty(sIPAddress) Then
            Return context.Request.ServerVariables("REMOTE_ADDR")
        Else
            Dim ipArray As String() = sIPAddress.Split(New [Char]() {","c})
            Return ipArray(0)
        End If
    End Function


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta MiguelVB jueves, 14 de mayo de 2015 7:41
    miércoles, 13 de mayo de 2015 20:05
  • Porque esa dirección equivale a localhost en IPv6. Has probado a hacerlo conectandote desde otro equipo?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta MiguelVB jueves, 14 de mayo de 2015 7:41
    miércoles, 13 de mayo de 2015 21:44

Todas las respuestas

  • prueba este metodo mejor.usando las variables del servidor

    Public Shared Function GetIPAddress() As String
        Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
        Dim sIPAddress As String = context.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
        If String.IsNullOrEmpty(sIPAddress) Then
            Return context.Request.ServerVariables("REMOTE_ADDR")
        Else
            Dim ipArray As String() = sIPAddress.Split(New [Char]() {","c})
            Return ipArray(0)
        End If
    End Function


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta MiguelVB jueves, 14 de mayo de 2015 7:41
    miércoles, 13 de mayo de 2015 20:05
  • Public Shared Function GetIPAddress() As String
        Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
        Dim sIPAddress As String = context.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
        If String.IsNullOrEmpty(sIPAddress) Then
            Return context.Request.ServerVariables("REMOTE_ADDR")
        Else
            Dim ipArray As String() = sIPAddress.Split(New [Char]() {","c})
            Return ipArray(0)
        End If
    End Function

    Hola Sergio, lo ejecuto en local y me da el valor siguiente: ::1

    Sale por la línea que te marco en negrita

    miércoles, 13 de mayo de 2015 20:45
  • Porque esa dirección equivale a localhost en IPv6. Has probado a hacerlo conectandote desde otro equipo?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta MiguelVB jueves, 14 de mayo de 2015 7:41
    miércoles, 13 de mayo de 2015 21:44
  • Buenos días Sergio,

    Gracias por tu respuesta.

    He probado ejecutarlo desde el servidor de web y funciona correctamente.

    Un saludo y hasta pronto.

    Miguel

    jueves, 14 de mayo de 2015 7:41