asp.net,  dotnet,  linux,  

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();


留言

您的电子邮箱地址不会被公开。 必填项已用*标注