using System.Net; using Microsoft.AspNetCore.Http; using Microsoft.IdentityModel.Tokens; namespace Bunny.Common.Utils.Net; public static partial class NetUtil { /// /// 获取请求的IP地址 /// /// HttpContext 上下问对象 /// 是否获取IPv4地址,默认为IPv4 /// IP地址 public static string GetRequestIpAddress(HttpContext context, bool getIpv4AddressType = true) { // 获取IP地址 var ipAddress = context.Connection.RemoteIpAddress!.ToString(); // 转换IP地址格式 var ip = IPAddress.Parse(ipAddress); // 转换成IPv4 var toIPv4 = ip.MapToIPv4().ToString(); // 转换成IPv6 var toIPv6 = ip.MapToIPv6().ToString(); // 如果获取IPv4地址 ipAddress = getIpv4AddressType ? toIPv4 : toIPv6; // 如果有IP直接返回 return ipAddress.IsNullOrEmpty() ? "" : ipAddress; } }