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

Moh*_*d K 5 c# asp.net ip

我想在我的代码中获取访问者的公共 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;
Run Code Online (Sandbox Code Playgroud)

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

And*_*eas 1

要获取请求的客户端 IP,您可以使用以下命令读取它:

 var clientIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ??
                Request.ServerVariables["REMOTE_ADDR"];
Run Code Online (Sandbox Code Playgroud)

您看到的 IP 地址是 IPv6 地址,因此它们是有效的 IP 编号,由客户端发送 HTTP 标头,因此您对此无能为力,很糟糕。

您需要记住的一件事是 HTTP_X_FORWARDED_FOR 可以包含多个有效的 IP 号码。

var listIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

clientIp = string.IsNullOrEmpty(listIp) ? Request.ServerVariables["REMOTE_ADDR"]
                                        : listIp.Split(',')[0];
Run Code Online (Sandbox Code Playgroud)