c# - 如何在asp.net中使用C#获取IP地址

标签 c# asp.net ip

我想在我的代码中获取访问者的公共(public) IP 地址。

我写了下面的代码来获取它:

        var context = System.Web.HttpContext.Current;
        string ip = String.Empty;

        if (context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
        {
            ip = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
        }
        else if (!String.IsNullOrWhiteSpace(context.Request.UserHostAddress))
        {
            ip = context.Request.UserHostAddress;                
        }

        if (ip == "::1")
            ip = "127.0.0.1";

        return ip;

我没有得到准确的 IP 地址它返回的值如下:fe80::9419:dfb3:22ce:4e88%68 但是当我在中看到我的 IP 时我的 IP 是什么? 它显示 13.67.58.30。我如何获得准确的 IP 地址?

最佳答案

我建议反对使用Request.ServerVariables["HTTP_X_FORWARDED_FOR"]。原因是它由 X-Forwarded-For HTTP header 传递,并且所有 HTTP header 都可以被欺骗。如果使用您的代码,用户可以通过简单地替换 header 来模拟他们想要的任何 IP。此外,也不能保证所有代理甚至都会将该 header 放在首位。

您可以通过以下方式获取用户的 IP 地址:

string ip = context.Request.UserHostAddress;

您看到的那个数字很可能是客户的 IPv6地址。

关于c# - 如何在asp.net中使用C#获取IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35148983/

相关文章:

c# - 如何在 .net 中读取具有不同层次结构的 xml 文件

c# - 如何在 C# 中使用线程池?

c# - .NET 中的 block 级与函数级范围界定是否对性能有影响

asp.net - 如何阻止我的 ASP.NET Web 服务返回 xml 数据?

c# - 图像 Url 出现问题,自动将文件夹名称添加到为图像创建的 URL

android - 使用电话作为接入点的设备的 IP 地址

c# - 检查消息框是否打开WPF C#?

python - Pandas:计算分组在一起的相似列的平均值、var

amazon-web-services - 无法访问 Amazon EC2 上的辅助 IP

.net - .NET 4.0 网站加载速度更快是有原因的吗?