在 ASP.NET Core 2.2 中获取客户端的 IP 地址
Posted
技术标签:
【中文标题】在 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 2.2 中获取客户端的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
使用 SIGNAL R 的 Angular 7 和 ASP.NET Core 2.2 的 CORS 策略问题
ASP.NET Core 2.2 : 二十. Action的多数据返回格式处理机制
如何在 ASP.NET CORE 3.1 中获取客户端 IP 地址?
Google Chart和Chart.Js,在Asp .NET Core 2.2中将脚本端发送C#变量
ASP.NET Core 2.2 CORS 没有“Access-Control-Allow-Origin”标头 [关闭]