我想在登录时将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
请帮帮我!
答案 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地址