我在VirtualBox中使用Windows Server,为此使用NATed端口80。 Request.UserHostAddress返回虚拟网络的本地IP。 我该如何获得用户的IP?
答案 0 :(得分:1)
您遇到的问题是您无法超越NAT。 NAT代表Network Address Translation
,因此在这种情况下,您将看到NAT设备的公共IP地址,而不是客户端。这就是它的工作方式。客户端可以发送其本地IP地址,但您需要在客户端上安装一些内容才能执行此操作。
另一种选择是从NAT切换到Bridged网络。桥接意味着VM所在的虚拟网络与主机所在的物理网络并排连接。这意味着他们将拥有位于同一子网上的IP地址,并且可以从同一网络上的任何其他路由进行路由。桥接器就像交换机/集线器,NAT就像路由器一样。
只要您的服务器/客户端之间没有任何NAT设备,就可以使用标准机制轻松查看IP(例如context.Request.ServerVariables["REMOTE_ADDR"]
,Request.UserHostAddress
等)
答案 1 :(得分:-1)
您想获取用户的公共IP地址吗? 最简单的方法是简单地创建一个PHP脚本来回显远程地址,或使用现有的API。
PHP:
<?php
echo $_SERVER["REMOTE_ADDR"];
?>
C#:
using (var client = new HttpClient()) {
var response = await client.GetStringAsync(new Uri("URL"));
IPAddress ip;
if (IPAddress.TryParse(response, out ip)) {
//Success
}
}