.NET CORE WEBAPI 后端获取来源IP

之前看别的地方说获取IP用

ip = HttpContext.Current.Request.UserHostAddress;

在ASP.NET Core 2.0及更高版本中不起作用。您必须从ConfigureServices方法中的Startup.cs类中注入  HttpContextAccessor实例。

 

实际上换成

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

就可以了 也不需要注入实例更不需要在构造函数那边重新赋值

但是还是很多人反应得到的地址是127.0.0.1

那是因为你直接在服务器端测试访问接口 肯定就是这个本地地址

如果是.NET 更高的版本就会是IPV6的内网地址::1

所以要到服务器上 用不同的网络请求才会有结果

另一个原因是经过了一层nginx这类的反向代理工具 把IP过滤了
需要配置下ip穿透 把ip通过header传给后端就可以了
然后后端提取这个header的ip值就可以了


posted @ 2024-07-07 20:22  MayBreath  阅读(5)  评论(0编辑  收藏  举报