我有一个通过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
答案 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检索它。你看不懂你没有的东西。