c# - 如何在 C#/asp.net/MVC 5 中获取用户的 IP 地址?
问题描述
以下代码在本地工作正常,但它只会获取服务器的 IP(如果我是正确的)。
try
{
string externalIP;
externalIP = (new WebClient()).DownloadString("http://checkip.dyndns.org/");
externalIP = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
.Matches(externalIP)[0].ToString();
model.IpCreacion = externalIP;
}
catch { }
我现在无法对此进行测试,因为我办公室的两个可以将其作为公共 URL 以在服务器上进行测试的人今天不在。代码在项目的控制器中,因此每次客户端执行应用程序时它都会在服务器上运行,实际上获取IP地址的并不是客户端。
如何让客户端获取他的 IP 地址,而不是服务器,执行我刚刚展示的代码?
如果我设法将此功能放在视图中,它会按我的意图工作吗?
更新:我尝试了其他方法作为答案发布,比如
string ip = System.Web.HttpContext.Current.Request.UserHostAddress;
和
model.IpCreacion = null;
model.IpCreacion = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(model.IpCreacion))
{
model.IpCreacion = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
但现在我只是得到::1
结果。这以前没有发生过,因为我得到了一个正确的 IP 地址。
解决方案
如果您想获取客户端 IP 地址,请访问 stackoverflow 中的以下帖子 如何在 ASP.NET MVC 中获取客户端的 IP 地址?
推荐阅读
- reactjs - 如何刷新 React 功能组件?
- c++ - 将 uint64_t var 转换为 void(*func)(...)
- c# - 左外连接c#的结果失败
- python - Pandas Groupby 基于多列中的值
- amazon-web-services - 将 Kafka 流式数据存储到 AWS EC2 上的特定卷
- php - laravel:如何在中间件中获取请求的 url http 状态码
- reactjs - React Native:更新平面列表
- r - 在 R 中折叠行
- flutter - 如何从 Dart 中的未来列表函数中获取列表
- react-admin - 创建/发布功能 React-admin 2.9 版