ASP.NET Core:如何获取远程 IP 地址?

     2023-03-30     215

关键词:

【中文标题】ASP.NET Core:如何获取远程 IP 地址?【英文标题】:ASP.NET Core: How to get remote IP address? 【发布时间】:2016-04-01 09:06:32 【问题描述】:

我尝试获取远程(客户端)IP 地址:

var ip = httpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress

但它只适用于本地请求(它会返回::1 值)

当我从远程机器加载页面时,该值为空。我调查了这种情况下Features 集合中没有IHttpConnectionFeature

为什么?以及如何正确获取远程IP地址?

【问题讨论】:

据我所知,它存在几个问题,特别是如果您将它托管在负载均衡器和/或 iis 后面。有一个UseOverrideHeaders左右,但是会在rc2中重命名为UseForwardedHeaders,见公告github.com/aspnet/Announcements/issues/147。但据我了解,这可能对您也没有帮助,因为它返回最后一个 X-Forwarded-For 在许多云部署中将是反向代理而不是原始用户。 但据我所知,讨论中有一个功能允许确定从哪个跃点获取 X-Forwarded-For(即 2 个跃点返回,而不仅仅是最新的 我认为这是一个很好的答案***.com/a/36316189/625581 How do I get client IP address in ASP.NET CORE?的可能重复 【参考方案1】:

我知道这篇文章很旧,但我来到这里寻找同样的问题,最后我做到了:

在 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。

一些有用的链接: How do I get client IP address in ASP.NET CORE? 和 RemoteIpAddress is always null

::1 可能是因为:

在 IIS 上的连接终止,然后转发到 v.next Web 服务器 Kestrel,因此与 Web 服务器的连接确实来自 localhost。 (https://***.com/a/35442401/5326387)

【讨论】:

当您发现类似问题并发布类似答案时,您可能需要在两者之间添加交叉引用。特别是如果一个看起来比另一个更完整。 HTH @superjos 你是什么意思? 还有另一个 SO question here 非常接近这个问题,并且您基本上复制了相同的答案。在这种情况下,将一个问题指向另一个问题可能很有用。甚至可能将问题标记为关闭。 是的,答案是一样的,因为我回答了这两个问题。我一直在寻找相同的解决方案,当我找到解决方案时,我回答了两个问题(我没有标记为重复,因为两者都在前一段时间被问到并且都已经有不同的答案没有解决问题)【参考方案2】:

试试这段代码,

var ipAddress = HttpContext.Connection.RemoteIpAddress;

如果您在同一个 LAN 中有另一台计算机,请尝试与这台计算机连接,但使用用户 ip 而不是 localhost。否则,您将始终得到 ::1 结果。

【讨论】:

谢谢,我想知道为什么它总是显示 ::1 结果,您的评论帮助我解决了问题。干杯=]

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

】如何在ASP.NETCORE3.1中获取客户端IP地址?【英文标题】:HowdoIgetclientIPaddressinASP.NETCORE3.1?【发布时间】:2020-04-2921:06:39【问题描述】:在WebAPI项目中编写代码时如何在ASP.NET3.1中获取客户端IP地址【问题讨论】:这能回答你的问题... 查看详情

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

】如何在ASP.NETCore2.1中获取客户端IP地址【英文标题】:HowtogetClientIPaddressinASP.NETCore2.1【发布时间】:2018-06-3015:57:12【问题描述】:我正在使用MicrosoftVisualStudio2017提供的Angular模板开发ASP.NetCore2.1。我的客户端应用程序运行良好。... 查看详情

ASP .NET Core:获取用户 IP 地址

】ASP.NETCore:获取用户IP地址【英文标题】:ASP.NETCore:GetUserIPAddress【发布时间】:2021-09-0318:48:07【问题描述】:我有一张桌子:有一个模型publicclassArticleLike:BaseEntitypubliclong?UserIdget;set;publicstringUserIpget;set;publicICollection<User>Userg... 查看详情

在 ASP.NET Core 2.2 中获取客户端的 IP 地址

】在ASP.NETCore2.2中获取客户端的IP地址【英文标题】:Getclient\'sIPaddressinASP.NETCore2.2【发布时间】:2019-12-0710:57:09【问题描述】:我在asp.netcore2.2中创建了一个微服务应用程序。我想从他使用它的地方获取用户的IP地址。下面的sn-p... 查看详情

当服务器位于 AWS ELB 之后时,ASP.NET Core MVC 应用程序如何获取客户端 IP 地址?

】当服务器位于AWSELB之后时,ASP.NETCoreMVC应用程序如何获取客户端IP地址?【英文标题】:HowcananASP.NETCoreMVCappgetclientIPaddresswhenserverisbehindAWSELB?【发布时间】:2019-09-2113:06:39【问题描述】:我在包含ELB的ElasticBeanstalk环境中的AWS上... 查看详情

在 ASP.NET CORE Web API 中获取客户端 IP 地址有问题吗?

】在ASP.NETCOREWebAPI中获取客户端IP地址有问题吗?【英文标题】:ProblemwithgettingclientIPaddressinASP.NETCOREWebAPI?【发布时间】:2019-10-2418:35:27【问题描述】:我通过在ASP.NETCOREWebAPI中使用以下方法获取服务器IP地址而不是客户端IP。请告... 查看详情

获取远程主机的IP地址

...找不到类似的方法来从ASP.NETWebAPI获取远程主机的IP地址。如何获取发出请求的远程主机 查看详情

如何在asp.net中获取IP地址

】如何在asp.net中获取IP地址【英文标题】:Howtogetanipaddressinasp.net【发布时间】:2013-01-0918:55:48【问题描述】:大家好,我正在尝试使用以下c#代码检索我的IP地址,但我得到的只是127.0.0.0。IP地址。当我输入我的IP地址时,我需要... 查看详情

如何从 ASP.NET 中的请求中获取 IP 地址?

】如何从ASP.NET中的请求中获取IP地址?【英文标题】:HowdoyougettheIPaddressfromarequestinASP.NET?【发布时间】:2010-10-2609:40:06【问题描述】:我一直在尝试解决这个问题,但在向适用于所有服务器的asp.net中的页面发出请求时,找不到... 查看详情

如何获取服务器 IP 地址(在 C#/asp.net 中)?

】如何获取服务器IP地址(在C#/asp.net中)?【英文标题】:HowtogettheserverIPAddress(inC#/asp.net)?【发布时间】:2010-11-2315:49:15【问题描述】:有没有1行方法来获取服务器的IP地址?谢谢【问题讨论】:你的意思是“服务器”-ASP.Net处... 查看详情

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

】如何在ASP.NETMVC中获取客户端的IP地址?【英文标题】:HowcanIgettheclient\'sIPaddressinASP.NETMVC?【发布时间】:2011-02-0408:53:57【问题描述】:我是ASP.NETMVC堆栈的新手,我想知道简单的Page对象和RequestServerVariables对象发生了什么?基本... 查看详情

如何在asp.net core中获取当前用户

】如何在asp.netcore中获取当前用户【英文标题】:Howtogetcurrentuserinasp.netcore【发布时间】:2016-08-0702:00:32【问题描述】:我想获取当前用户,以便访问他们的电子邮件地址等字段。但我不能在asp.net核心中做到这一点。这是我的代... 查看详情

如何在asp.net mvc中使用IP地址获取地理位置

】如何在asp.netmvc中使用IP地址获取地理位置【英文标题】:HowtogetthegeographiclocationusingIPAddressinasp.netmvc【发布时间】:2014-08-0812:20:54【问题描述】:我知道这段代码:stringipAddress=Request.ServerVariables["HTTP_X_FORWARDED_FOR"];if(string.IsNullOrE... 查看详情

在 ASP.NET 中获取服务器的 IP 地址?

...erverinASP.NET?【发布时间】:2010-10-1309:21:25【问题描述】:如何获取调用我的ASP.NET页面的服务器的IP地址?我见过关于Response对象的东西,但在c#中我很新。非常感谢。【问题讨论】:【参考方案1】:这应该有效://thisgetstheipaddress... 查看详情

用户运行托管 IIS 链接时如何在 asp.net 中获取客户端 IP 地址

】用户运行托管IIS链接时如何在asp.net中获取客户端IP地址【英文标题】:HowtogettheclientIPaddressinasp.netwhenuserrunshostedIISlink【发布时间】:2021-07-1805:32:12【问题描述】:我在IIS中托管我的代码,我想在任何用户使用我的托管链接登录... 查看详情

在与 Asp.Net Core TestServer 的集成测试中设置虚拟 IP 地址

】在与Asp.NetCoreTestServer的集成测试中设置虚拟IP地址【英文标题】:SetdummyIPaddressinintegrationtestwithAsp.NetCoreTestServer【发布时间】:2018-08-2100:10:51【问题描述】:我有一个C#Asp.NetCore(1.x)项目,实现了一个WebRESTAPI及其相关的集成测试... 查看详情

Asp.Net Core 允许 CORS 中的 IP 范围

...:我正在使用标准的ASP.NETCore中间件,并且我希望允许IP地址范围(在我的情况下,我正在寻找私有IP地址范围)以简化开发。目前,我的中间件是这样的:app.UseCors(builder=>builder.WithOrigins("http: 查看详情

C# asp.net获取客户端的Ipv4 ip地址[重复]

...【问题描述】:我下面的代码正在获取ivp6ip地址我不确定如何以相同的方式获取ipv4。stringipAddress="";if(Dns.GetHostAddresses(Dns.GetHostName()).Length> 查看详情