请让我知道如何获取客户端IP地址,
我已经尝试了以下所有操作,但得到的输出相同:127.0.0.1
string strClientIP; strClientIP = Request.UserHostAddress.ToString(); string strHostName = System.Net.Dns.GetHostName(); string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString(); string ipaddress = string.Empty ; ipaddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (ipaddress == "" || ipaddress == null) ipaddress = Request.ServerVariables["REMOTE_ADDR"];
如何获得正确的IP?
使用,您处在正确的轨道上REMOTE_ADDR
,但是如果您在本地访问该站点可能无法正常工作,它将显示本地主机。
REMOTE_ADDR
是包含客户端IP地址的标头,您应该首先检查该IP地址。
如果HTTP_X_FORWARDED
访问者正在通过代理服务器,则还应检查到标题。请注意,这HTTP_X_FORWARDED
是一个可以包含多个逗号分隔值的数组,具体取决于代理的数量。
这是一个小的c#代码段,显示确定客户端的ip:
string clientIp = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if( !string.IsNullOrEmpty(clientIp) ) { string[] forwardedIps = clientIp.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries ); clientIp = forwardedIps[forwardedIps.Length - 1]; } else { clientIp = context.Request.ServerVariables["REMOTE_ADDR"]; }