2017-09-05 106 views
0

所以我有一个静态方法来使用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,则建立会话之前不起作用。

任何想法是赞赏!

回答

0

下面的方法是我得到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;