如何在数据库asp.net中存储用户IP?

时间:2014-01-09 12:50:02

标签: c# database

我想在登录时将user_ip存储在数据库中,因此我创建了登录历史记录表 得到IP作为nvarchar(50)然后我搜索,我发现这个方法返回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 请帮帮我!

5 个答案:

答案 0 :(得分:4)

您正在使用localhost运行您的应用程序。尝试使用IP运行,然后它将捕获IP

答案 1 :(得分:1)

HttpContext.Current.Request.UserHostAddress;

答案 2 :(得分:0)

尝试使用Request.UserHostName

var ipAddress = Request.UserHostName;

答案 3 :(得分:0)

使用来自link

的简单代码

即使它在localhost

中运行也能正常工作
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;
}

答案 4 :(得分:0)

:: 1 IP地址表示已直接从服务器调用网页(可能使用localhost域名)。

如果您从其他计算机上调用该网页,或者如果您在不使用localhost域名的情况下使用该网页进行呼叫(使用您的LAN或WAN IP地址),您将获得客户端用来访问您网页的IP地址