首页 > 代码库 > 负载均衡的场景下ASP.NET Core如何获取客户端IP地址

负载均衡的场景下ASP.NET Core如何获取客户端IP地址

在ASP.NET中,使用负载均衡时,可以通过ServerVariables获取客户端的IP地址。

var ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"];

但在ASP.NET Core中没有ServerVariables的对应实现,需要换一种方式,可以在HttpContext.Request.Headers中获取,需要注意的是key与ServerVariables方式不一样,ServerVariables中是"HTTP_X_FORWARDED_FOR",HttpContext.Request.Headers中是"X-Forwarded-For",示例代码如下:

var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();

完整的扩展方法实现如下:

public static class HttpContextExtension{    public static string GetUserIp(this HttpContext context)    {        var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();        if (string.IsNullOrEmpty(ip))        {            ip = context.Connection.RemoteIpAddress.ToString();        }        return ip;    }}

负载均衡的场景下ASP.NET Core如何获取客户端IP地址