NET7下取客户IP

发布时间 2023-07-26 03:16:12作者: 牛腩

NET7下取客户IP

WEB层建立以下类:

   //控制器中直接用即可取IP   ViewBag.ip = HttpContext.GetClientIP();
     public static class HttpContextExtension
    {
        public static string GetClientIP(this HttpContext context)
        {
            var ip = context.Request.Headers["Cdn-Src-Ip"].FirstOrDefault();
            if (!string.IsNullOrEmpty(ip))
                return IpReplace(ip);

            ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
            if (!string.IsNullOrEmpty(ip))
                return IpReplace(ip);

            ip = context.Connection.RemoteIpAddress.ToString();

            return IpReplace(ip);
        }

        static string IpReplace(string inip)
        {
            //::ffff:
            //::ffff:192.168.2.131 这种IP处理
            if (inip.Contains("::ffff:"))
            {
                inip = inip.Replace("::ffff:", "");
            }
            return inip;
        }
    }