2014-01-09 42 views
0

我想user_ip存儲在數據庫中,當他登錄所以我創建表,登錄歷史 這得到了IP作爲爲nvarchar(50),那麼我搜索,我發現這個方法返回的IP作爲字符串如何在數據庫asp.net中存儲用戶IP?

<i> 

public string GetUser_IP() 
{ 
    string VisitorsIPAddr = string.Empty; 
    if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null) 
    { 
     VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); 
    } 
    else if (HttpContext.Current.Request.UserHostAddress.Length != 0) 
    { 
     VisitorsIPAddr = HttpContext.Current.Request.UserHostAddress; 
    } 
    return VisitorsIPAddr; 
} 
</i> 

但它存儲這樣的IP ::1 請幫助我!

回答

4

您正在使用localhost運行您的應用程序。嘗試使用IP運行,然後它會捕獲IP

1
HttpContext.Current.Request.UserHostAddress; 
0

嘗試使用Request.UserHostName

var ipAddress = Request.UserHostName; 
0

使用這個簡單的代碼從link

即使是在本地主機上運行它的工作原理

public static string getclientIP() 
{ 
    string result= string.Empty; 
    string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
    if (!string.IsNullOrEmpty(ip)) 
    { 
     string[] ipRange = ip.Split(','); 
     int le = ipRange.Length - 1; 
     result = ipRange[0]; 
    } 
    else 
    { 
     result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
    } 

    return result; 
} 
0

的:: 1 IP地址意味着該網頁已被直接從服務器調用(可能通過使用localhost d域名)。

如果您從另一臺計算機呼叫網頁,或者如果您不使用localhost域名(使用您的LAN或WAN IP地址)呼叫該網頁,則會獲得客戶端用來訪問您的網絡的IP地址頁。

相關問題