net core中获取用户请求ip地址
方法一:通过注入来获取
先添加一个依赖注入
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
在控制器里边使用构造函数注入
private readonly IHttpContextAccessor _httpContextAccessor; public TestController( IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; }
获取
//获取ip地址 string ipaddress = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();
方法二:直接获取
public void OnActionExecuting(ActionExecutingContext context) { //获取ip地址 string ipaddress = context.HttpContext.Connection.RemoteIpAddress.ToString(); }
但是这两种写法,使用了nginx后是无法访问的
使用了nginx后无法获取ip问题:
瞧瞧nginx的配置,然后找获取外网ip的方法
贴一下这个配置的代码
proxy_set_header X-Real-IP $remote_addr;
这里我们可以看到,我们配了一个real-ip,nginx会转发给你,通过请求的header获取就行了
context.HttpContext.Request.Headers["X-Real-IP"].FirstOrDefault();