【发布时间】:2020-12-05 20:24:30
【问题描述】:
我在获取访问者 IP 地址时遇到问题 我正在使用 asp net mvc 不幸的是,我使用以下代码保存了访问者的 IP 地址它在我的本地网络上不起作用,许多人从 LAN 访问了我的页面,但没有捕获其中任何一个,我有一个包含许多页面的网站,如果用户访问另一个页面也是问题它根本不会捕获,因为我在 Home 索引中有代码 请让我知道我的代码有什么问题以及我必须将代码放在项目中的哪个位置,以便如果用户单击链接而不是主页,它将捕获任何页面的访问者 这是我的代码 家庭控制器
public ActionResult Index()
{
string currip = string.Empty;
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
currip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else if (System.Web.HttpContext.Current.Request.UserHostAddress.Length != 0)
{
currip = System.Web.HttpContext.Current.Request.UserHostAddress;
}
// string currip = HttpContext.Request.UserHostAddress.ToString(); // tried this didnt work it gave me single ip for all visitors
// vs.Ip = currip;
vs.Ip = HttpContext.Request.UserHostAddress.ToString();
vs.lastaccess = DateTime.Now;
vs.visits += 1;
_db.SaveChanges();
return view();
}
更新 使用时 currip = System.Web.HttpContext.Current.Request.UserHostAddress; 对于 post 方法添加登录信息 ip 出现但对于访问它没有出现,因为它是 get 方法 有什么关系吗?
【问题讨论】:
-
这可能是由于防火墙/DMZ/NAT。
-
我对此一无所知,我们正处于测试阶段,所以我不确定我们是否托管它是否可以使用当前代码,如果用户登录,我已经尝试过了currip = System.Web.HttpContext.Current.Request.UserHostAddress;但不访问
-
@Progman 不,它没有
-
请记住,您可能需要调整防火墙/转发器/负载平衡器配置以传递任何这些标头
标签: c# asp.net asp.net-mvc ip-address