2017-09-05 101 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;