首页 > 解决方案 > 如何在 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 地址。

标签: c#asp.net-corerazor

解决方案


如果您想获取客户端 IP 地址,请访问 stackoverflow 中的以下帖子 如何在 ASP.NET MVC 中获取客户端的 IP 地址?


推荐阅读