获取返回客户端IP的网站客户端的IP地址

时间:2019-12-12 20:05:10

标签: asp.net iis

我有一个通过IIS托管的网站,并且想要包含。在该testfile.aspx中,我想获取客户端的IP地址并根据需求重定向。但是,当我尝试获取IP地址时,却获得了托管我网站的计算机的IP,而不是用户的

How to get a user's client IP address in ASP.NET?

我已经尝试了上面链接中的所有方法,它们都返回了主机的IP地址。我已经尝试了包含页面中的代码以及示例测试页面后面的代码,但仍然无法正常工作。

版本1

Dim ipAdd As String 
ipAdd = Request.ServerVariables("REMOTE_ADDR")
ClientScript.RegisterStartupScript(Me.GetType(), "myalert", "alert('This is your ip " & ipAdd & "');", True)

版本2

ClientScript.RegisterStartupScript(Me.GetType(), "myalert", "alert('This is your ip " & Request.UserHostAddress & "');", True)

这两种方法都返回我的IIS Web服务器的公共IP

2 个答案:

答案 0 :(得分:1)

我在类文件中使用它来获取UserHostAddress,它是连接客户端的IP地址:

string sUserHostAddress = HttpContext.Current.Request.UserHostAddress;

我正在使用WebForms,在那里我可以使用它在文件背后的代码中获取它:

string sUserHostAddress = Request.UserHostAddress;

希望这会有所帮助。

编辑: 我在我的网站上放置了一个页面,您可以在其中看到结果。 Check your IP address

答案 1 :(得分:1)

似乎客户端IP地址正在转换到应用程序的数据路径中的某个位置,例如通过代理,NAT或负载平衡器。

您需要找出位置并对其进行配置,以将原始IP地址保留在x-forwarded-for标头中。现代网络设备都具有此选项。

如果没有转发原始IP地址,则您的代码无法从任何API检索它。你看不懂你没有的东西。