记录客户端IP地址

时间:2016-11-07 03:17:12

标签: c# asp.net .net http

我正在尝试记录我构建的其中一个应用程序的客户端IP地址。它在开发服务器上运行正常。但是,只要我们将解决方案部署到具有负载均衡器的生产服务器上,它似乎就会记录Load Balancer的IP地址而不是客户端IP。

我知道我们需要添加HTTP_X_FORWARD_FOR标头。

这是我的代码:

TestType{typeof(sin)}

感谢是否有人可以帮我识别我所犯的错误

2 个答案:

答案 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以来它已经准备好了。