共计 689 个字符,预计需要花费 2 分钟才能阅读完成。
在 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;
}
}
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/139468.htm
正文完
星哥玩云-微信公众号