我正在尝试记录我构建的其中一个应用程序的客户端IP地址。它在开发服务器上运行正常。但是,只要我们将解决方案部署到具有负载均衡器的生产服务器上,它似乎就会记录Load Balancer的IP地址而不是客户端IP。
我知道我们需要添加HTTP_X_FORWARD_FOR标头。
这是我的代码:
TestType{typeof(sin)}
感谢是否有人可以帮我识别我所犯的错误
答案 0 :(得分:1)
有时您的访问者位于代理服务器或路由器后面,标准Request.UserHostAddress仅捕获代理服务器或路由器的IP地址。在这种情况下,用户的IP地址将存储在服务器变量(“HTTP_X_FORWARDED_FOR”)中。
protected string GetIPAddress()
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
return addresses[0];
}
}
return context.Request.ServerVariables["REMOTE_ADDR"];
}
上面的代码可以帮助您实现目标。
答案 1 :(得分:0)
另一个可行的选择是:
var remoteIpAddress = request.HttpContext.Connection.RemoteIpAddress;
不是说你必须使用它,但使用这种方法对你来说这个过程要简单得多。
以前在.NET Core RC1中已经破解了,但是自从RC2以来它已经准备好了。