En este artículo voy a explicar cómo obtener la dirección IP de los visitantes a tu sitio web en ASP.Net. Básicamente, existen dos formas para buscar una IP:
- Para encontrar la dirección IP de una máquina detrás de LAN
- Para encontrar la dirección IP detrás de proxy o máquina cliente
Enseguida puedes ver el ejemplo:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="ObtenerIP_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Obtener dirección IP y Host Name</title>
</head>
<body>
<form id="form1" runat="server">
<div style="font-weight:bold; border:1px;">
Tu dirección IP es: <asp:Label ID="lblIPAddress" runat="server" Text=""></asp:Label><br /><br />
Tu computadora/Host Name es: <asp:Label ID="lblHostName" runat="server" Text=""></asp:Label>
<br /><br />
Tu dirección IP detrás del Proxy es: <asp:Label ID="lblIPBehindProxy" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
Imports System.Net
Partial Class ObtenerIP_Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim strHostName As String = Dns.GetHostName()
Dim ipEntry As IPHostEntry = Dns.GetHostEntry(strHostName)
lblIPAddress.Text = Convert.ToString(ipEntry.AddressList(ipEntry.AddressList.Length - 1))
lblHostName.Text = Convert.ToString(ipEntry.HostName)
'Find IP Address Behind Proxy Or Client Machine In ASP.NET
Dim IPAdd As String = String.Empty
IPAdd = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If String.IsNullOrEmpty(IPAdd) Then
IPAdd = Request.ServerVariables("REMOTE_ADDR")
lblIPBehindProxy.Text = IPAdd
End If
End Sub
End Class

Si quieres descargar el ejemplo, lo puedes hacer en la siguiente liga:
https://github.com/jiestrada/ObtenerIP
Espero que sea de utilidad este ejemplo, si tienes alguna pregunta no dudes en escribirme.