【发布时间】:2020-04-06 06:44:00
【问题描述】:
我有一个通过 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
【问题讨论】:
-
产生一些流量,然后检查您的 IIS 日志以查看传入的客户端 IP 地址是否是您希望看到的。
-
询问您的提供商是否使用NAT。如果它可以被禁用。
-
我的日志只显示主机的 ip,我们确实使用了 NAT,但它不能被禁用,这很好我只对公共 ip 感兴趣
-
@JohnWu 查看我的跟踪日志文件,它将主机的 ip 列为 s-ip 列
-
检查是否有 x-forwarded-for 标头(例如,通过将其添加到 IIS 日志中)。如果有,您可以使用它。