在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",示例代码以下:this
var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
完整的扩展方法实现以下:spa
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; } }