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

     2023-03-08     87

关键词:

【中文标题】在 ASP.NET Core 2.2 中获取客户端的 IP 地址【英文标题】:Get client's IP address in ASP.NET Core 2.2 【发布时间】:2019-12-07 10:57:09 【问题描述】:

我在 asp.net core 2.2 中创建了一个微服务应用程序。我想从他使用它的地方获取用户的 IP 地址。

下面的 sn -p 提供了托管服务器的 ip 地址。

var remoteIpAddress = request.HttpContext.Connection.RemoteIpAddress;

我想获取使用 API 进行审核日志的用户的 IP 地址。

【问题讨论】:

我认为您必须将其从客户端传递到服务器(Web api) 如果您在同一台机器上托管 web api 并调用 web api,那么您将看到与request.HttpContext.Connection.RemoteIpAddress 相同的 IP 地址。 @JohnB 能否提供步骤或示例? 【参考方案1】:

注入IHttpContextAccessor

并把下面的sn-p

var result = string.Empty;

 //first try to get IP address from the forwarded header
                if (_httpContextAccessor.HttpContext.Request.Headers != null)
                
                    //the X-Forwarded-For (XFF) HTTP header field is a de facto standard for identifying the originating IP address of a client
                    //connecting to a web server through an HTTP proxy or load balancer

                    var forwardedHeader = _httpContextAccessor.HttpContext.Request.Headers["X-Forwarded-For"];
                    if (!StringValues.IsNullOrEmpty(forwardedHeader))
                        result = forwardedHeader.FirstOrDefault();
                

                //if this header not exists try get connection remote IP address
                if (string.IsNullOrEmpty(result) && _httpContextAccessor.HttpContext.Connection.RemoteIpAddress != null)
                    result = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();

我认为它可能有效。

【讨论】:

如何在 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 Web API 中获取客户端 IP 地址有问题吗?

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

如何在 Asp.net Core 中获取用户浏览器名称(用户代理)?

...间】:2015-04-2405:52:15【问题描述】:能否告诉我如何获取客户端在MVC6、ASP.NET5中使用的浏览器名称?【问题讨论】:【参考方案1】:我认为这很容易。在Request.Headers["User-Agent"]. 查看详情

如何在 ASP.NET Core 2.2 中使用 IValidateOptions 验证配置设置?

】如何在ASP.NETCore2.2中使用IValidateOptions验证配置设置?【英文标题】:HowtovalidateconfigurationsettingsusingIValidateOptionsinASP.NETCore2.2?【发布时间】:2019-11-2919:43:20【问题描述】:Microsoft的ASP.NETCore文档brieflymentions可以实现IValidateOptions&am... 查看详情

ASP.NET Core Identity UserManager.IsInRole 调用在 2.2 中有效,但在 3.0 中引发 InvalidOperation

】ASP.NETCoreIdentityUserManager.IsInRole调用在2.2中有效,但在3.0中引发InvalidOperation【英文标题】:ASP.NETCoreIdentityUserManager.IsInRoleCallWorksin2.2ButThrowsInvalidOperationin3.0【发布时间】:2020-02-2308:04:42【问题描述】:我有2个使用ASP.NETCoreIdentit 查看详情

如何在 asp net core 2.2 中间件中多次读取请求正文?

】如何在aspnetcore2.2中间件中多次读取请求正文?【英文标题】:Howtoreadrequestbodymultipletimesinaspnetcore2.2middleware?【发布时间】:2019-06-2320:23:48【问题描述】:我试过这个:Readrequestbodytwice和这个:https://github.com/aspnet/Mvc/issues/4962但... 查看详情

在 ASP .Net Core 2.2 中添加 JWT 令牌后授权不起作用

】在ASP.NetCore2.2中添加JWT令牌后授权不起作用【英文标题】:AuthorizationdoesnotworkafteraddingJWTtokeninASP.NetCore2.2【发布时间】:2020-02-2716:52:25【问题描述】:我正在学习如何在ASP中使用JWT令牌认证。我有一个简单的网站,其中包含CRUD... 查看详情

如何在 ASP.NET Core 2.2 中实现标识

】如何在ASP.NETCore2.2中实现标识【英文标题】:HowtoimplementIdentityinASP.NETCore2.2【发布时间】:2019-06-2511:45:21【问题描述】:在我的网站中,我想让管理员使用帐户登录以修改数据库。另外,我将来可能会添加一些角色和帐户。所... 查看详情

在 ASP.NET Core 2.2 中使用 InProcess 托管模型时,Serilog 不会将日志写入文件

】在ASP.NETCore2.2中使用InProcess托管模型时,Serilog不会将日志写入文件【英文标题】:SerilogdoesnotwritelogtofilewhileusingInProcesshostingmodelinASP.NETCore2.2【发布时间】:2019-05-1915:45:06【问题描述】:如果我在ASP.NETCore2.2中使用新引入的InProce... 查看详情

如何在 asp.net core 中使用 websockets

...数据。现在我想实现websockets以便将通知从服务器发送到c#客户端 查看详情

在 ASP.NET Core 2.1 Web 客户端中存储不记名令牌的位置

】在ASP.NETCore2.1Web客户端中存储不记名令牌的位置【英文标题】:WheretostorebearertokeninASP.NETCore2.1webclient【发布时间】:2018-12-0621:40:03【问题描述】:我正在编写一个三级应用程序。我有ASP.NETCore2.1Api、Web客户端应用程序和Android应... 查看详情

ASP.NET Core 3.1 - 如何获取客户端的 IP 地址?

】ASP.NETCore3.1-如何获取客户端的IP地址?【英文标题】:ASP.NETCore3.1-HowdoIgetaclient\'sIPAddress?【发布时间】:2020-05-1609:44:32【问题描述】:我有一个Razor页面Web应用程序并正在记录用户的IP地址。出于某种原因,它返回的是IP地址,... 查看详情

如何在启用 ASP.NET Core 2.2 EndpointRouting 的情况下使用 RouteDataRequestCultureProvider?

】如何在启用ASP.NETCore2.2EndpointRouting的情况下使用RouteDataRequestCultureProvider?【英文标题】:HowtouseRouteDataRequestCultureProviderwithASP.NETCore2.2EndpointRoutingenabled?【发布时间】:2019-06-1813:06:43【问题描述】:我正在尝试在新的ASP.NETCore2.2MV... 查看详情

如何在 ASP.NET Core 3.1 中启用多重身份验证?

...1项目中,我使用jwt进行身份验证。问题是我也在使用azure客户端来获取vm大小名称列表,并且它也在使用Bearer令牌。现在测试我使用azure中的AllowAnonymo 查看详情

使用 SIGNAL R 的 Angular 7 和 ASP.NET Core 2.2 的 CORS 策略问题

...16:40【问题描述】:我和我的朋友在使用我们的API和Angular客户端时遇到了CORS问题。我们正在尝试建立一个链接,我们正在使用signalR并且客户端(Angular7)注册自己 查看详情

ASP.NET Core 2.2 Razor 页面中的自定义路由

】ASP.NETCore2.2Razor页面中的自定义路由【英文标题】:CustomRoutinginASP.NETCore2.2RazorPages【发布时间】:2020-05-0609:11:47【问题描述】:我在为ASP.NETCore2.2应用程序中的RazorPages设置路由约定时遇到问题(我正在从传统MVC迁移到RazorPages)... 查看详情

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

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