服务端:
//
方法一
HttpContext.Current.Request.UserHostAddress; 
//
方法二
HttpContext.Current.Request.ServerVariables[
"
REMOTE_ADDR
"
];
//
方法三
string
strHostName
=
System.Net.Dns.GetHostName();
string
clientIPAddress
=
System.Net.Dns.GetHostAddresses(strHostName).GetValue(
0
).ToString();
//
方法四(无视代理)
HttpContext.Current.Request.ServerVariables[
"
HTTP_X_FORWARDED_FOR
"
];
客户端:
//方法五
var ip = '<!--#echo var="REMOTE_ADDR"-->';
alert("Your IP address is "+ip);

//方法六(无视代理)
function GetLocalIPAddress()
{
var obj = null;
var rslt = "";
try
{
obj = new ActiveXObject("rcbdyctl.Setting");
rslt = obj.GetIPAddress;
obj = null;
}
catch(e)
{
//
}
return rslt;
}
最后综合的方法:
if
(Context.Request.ServerVariables[
"
HTTP_VIA
"
]
!=
null
)
//
using proxy
{
ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP.
}
else
//
not using proxy or can't get the Client IP
{
ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
}

备注:
1. 有些代理是不会发给我们真实IP地址的
2. 有些客户端会因为“header_access deny”的安全设置而不发给我们IP
本文介绍了六种在ASP.NET中获取客户端IP地址的方法,并提供了一种综合方案来判断是否使用了代理服务器。方法包括从Request对象中直接读取、通过DNS解析等。
1192

被折叠的 条评论
为什么被折叠?



