Asp.net
ASP.NET Core:如何獲取遠端 IP 地址?
我嘗試獲取遠端(客戶端)IP 地址:
var ip = httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress但它僅適用於本地請求(它將返回
::1值)當我從遠端機器載入頁面時,該值為空。
IHttpConnectionFeature在這種情況下,我調查了Features集合中沒有。為什麼?以及如何正確獲取遠端IP地址?
我知道這篇文章很舊,但我來這裡是為了尋找同樣的問題,最後我做到了:
在 project.json 添加依賴:
"Microsoft.AspNetCore.HttpOverrides": "1.0.0"在 Startup.cs 中,在 Configure 方法中添加:
app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });而且當然:
using Microsoft.AspNetCore.HttpOverrides;然後,我得到了這樣的ip:
Request.HttpContext.Connection.RemoteIpAddress就我而言,在 VS 中調試時,我總是得到 IpV6 localhost,但是當部署在 IIS 上時,我總是得到遠端 IP。
一些有用的連結: 如何在 ASP.NET CORE 中獲取客戶端 IP 地址?並且RemoteIpAddress 始終為空
::1 可能是因為:
IIS 處的連接終止,然後轉發到 v.next Web 伺服器 Kestrel,因此與 Web 伺服器的連接確實來自 localhost。(https://stackoverflow.com/a/35442401/5326387)