我如何在ASP.NET Core中获取客户端IP地址?

18 浏览
0 Comments

我如何在ASP.NET Core中获取客户端IP地址?

请问在使用MVC 6时,如何在ASP.NET中获取客户端IP地址。

Request.ServerVariables[\"REMOTE_ADDR\"]无法起作用。

admin 更改状态以发布 2023年5月23日
0
0 Comments

在 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

0
0 Comments

API已更新。 不确定何时更改,但是根据Damien Edwards在去年12月末的推文,现在您可以这样做:

var remoteIpAddress = request.HttpContext.Connection.RemoteIpAddress;

0