ASP .NET Core:获取用户 IP 地址
Posted
技术标签:
【中文标题】ASP .NET Core:获取用户 IP 地址【英文标题】:ASP .NET Core: Get User IP Address 【发布时间】:2021-09-03 18:48:07 【问题描述】:我有一张桌子:有一个模型
public class ArticleLike:BaseEntity
public long? UserId get; set;
public string UserIp get; set;
public ICollection<User> User get; set;
如何获取用户的IP地址? 我必须在服务或存储库上编写它的方法吗?
【问题讨论】:
【参考方案1】:获取客户端用户IP地址
var remoteIpAddress = Request.HttpContext.Connection.RemoteIpAddress.ToString();
客户端IP地址可以通过HttpContext.Connection对象获取。
属性 RemoteIpAddress 是客户端 IP 地址。返回的对象(System.Net.IpAddress)可以用来判断是IPV4还是IPV6地址。
例如,如果您得到类似 ::1 的结果,这就是 IPv6 格式
【讨论】:
【参考方案2】:var remoteIpAddress = Request.HttpContext.Connection.RemoteIpAddress;
或
var remoteIpAddress = httpContext.GetFeature<IHttpConnectionFeature>()?.RemoteIpAddress;
简单用法:
在控制器中
public class HomeController : Controller
private readonly IHttpContextAccessor _httpContextAccessor;
public HomeController(IHttpContextAccessor httpContextAccessor)
_httpContextAccessor = httpContextAccessor;
public IActionResult Index()
var ip = _httpContextAccessor.HttpContext?.Connection?.RemoteIpAddress?.ToString();
return Content(ip);
在启动文件中:
public void ConfigureServices(IServiceCollection services)
services.AddHttpContextAccessor();
【讨论】:
我使用这种方法,但我得到这样的 IP :fe80::18a3:6c10:468f:f212%16 我不能从你的代码中使用,因为我有错误:'type' does not contain a HttpContext 上“标识符”的定义 我终于可以获取IP地址并将其添加到数据库中了。但是现在我想在单击心脏时显示在视图上,然后更改其颜色并添加其喜欢的数量。如果视图上的条件代码,我的写作能力真的很弱。 :(以上是关于ASP .NET Core:获取用户 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core 2.1 中获取客户端 IP 地址