我如何在ASP.NET Core中获取客户端IP地址?
我如何在ASP.NET Core中获取客户端IP地址?
请问在使用MVC 6时,如何在ASP.NET中获取客户端IP地址。
Request.ServerVariables[\"REMOTE_ADDR\"]
无法起作用。
admin 更改状态以发布 2023年5月23日
在 project.json 中添加一个依赖项:
"Microsoft.AspNetCore.HttpOverrides": "2.2.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 总是 null
::1
可能是因为:
IIS 终止连接,然后将连接转发给 Kestrel,即 v.next Web 服务器,所以对于 Web 服务器的连接确实来自本地主机。(来源: https://stackoverflow.com/a/35442401/5326387)
编辑于 2020 年 12 月: 感谢 SolidSnake: 最新版本是 2.2.0
编辑于 2021 年 06 月: 感谢 Hakan Fıstık: 在 .NET 5 中,名称空间是 Microsoft.AspNetCore.Builder