.NET CORE WEBAPI 後端獲取來源IP

MayBreath發表於2024-07-07

之前看別的地方說獲取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值就可以了


相關文章