登录时获取客户端IP
问题描述:
所以我有一个静态方法来使用HttpContext
来获取客户端IP。登录时获取客户端IP
public static string GetClientMachineIPAddress()
{
string strClientIP = string.Empty;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null ||!string.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
{
strClientIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (strClientIP == string.Empty)
{
strClientIP = HttpContext.Current.Request.UserHostAddress;
}
return strClientIP;
}
此工作正常时,用户已经登录,但如果我尝试,因为HttpContext.Current
登录过程中获得IP为null,则建立会话之前不起作用。
任何想法是赞赏!
答
下面的方法是我得到IP地址的方式。即使您没有会话,HttpContext.Current也不应该为空。我怀疑还有其他的东西导致了错误。
string ipaddress;
ipaddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (ipaddress == "" || ipaddress == null)
ipaddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
return ipaddress;