我已经在Azure中部署了一个.net应用程序。我正在使用以下代码获取客户端计算机的IP地址。它对于个人系统正常工作,但是如果我从连接到网络的办公室访问该应用程序,我的办公室中的所有系统都获得了相同的公共IP。
public string GetIPAddress()
{
IPHostEntry Host = default(IPHostEntry);
string Hostname = null;
Hostname = System.Environment.MachineName;
ViewBag.UserHostName = Hostname;
Host = Dns.GetHostEntry(Hostname);
foreach (IPAddress IP in Host.AddressList)
{
if (IP.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
IPAddress = Convert.ToString(IP);
}
}
return IPAddress;
}
我想确定正在访问该应用程序的每个IP。有人可以帮助我,如果我也从Office域访问了如何检索单个系统ip。
预先感谢...
答案 0 :(得分:1)
我想识别正在访问该申请的每个IP
现实并不在乎。您的办公室已决定隐藏自己-可能是NAT设备。那就是您的愿望结束的地方,因为如果它发生在客户端,则不可能这样做。
更具体地说:您无法识别每个IP地址。隐藏IP地址的整个概念是保持隐藏。如果您要运行反向代理,该代理会将其添加到网络服务器的标头中进行分析,但这就是另一面(即,将流量分配到多个服务器)。 NAT后面的办公室根本不添加信息。昨天我收到一个小包,告诉我里面有什么;)
顺便说一句,地址不是唯一的。 NAT设备在使用时是在内部使用专用地址空间,每个公司都会这样做。这种独特性的可能性极低(当怪异星球上的每个路由器似乎都设置为使用192.168.0.x作为默认网络时)。当您在站点上吸引更多人时,内部IP并不是唯一的。而且这可能很快发生-由于我们的地址不足,因此正在使用运营商级NAT。尤其是移动设备被隐藏起来,因为不需要拿到它们(并招致用户费用)。