如何使用asp.net在负载平衡机上获取访问者IP

如何使用asp.net在负载平衡机上获取访问者IP,asp.net,load-balancing,Asp.net,Load Balancing,我们有两个负载平衡服务器。因为我们现在托管了一个asp.net 3.5应用程序,所以我们使用RequestUserHostAddress来获取访问者ip,但它提供的是负载平衡器ip,而不是真正的ip。任何人都可以为此编写代码。问题更多地与“负载平衡器”充当代理的事实有关。您使用的是哪种类型的负载平衡器?我知道Microsoft ISA server有一个将原始用户IP地址传递到Web服务器的设置 否则,您将不得不编写一个页面来转储服务器变量,并查看是否添加了一个额外的服务器变量来提供真实的客户端

我们有两个负载平衡服务器。因为我们现在托管了一个asp.net 3.5应用程序,所以我们使用RequestUserHostAddress来获取访问者ip,但它提供的是负载平衡器ip,而不是真正的ip。任何人都可以为此编写代码。

问题更多地与“负载平衡器”充当代理的事实有关。您使用的是哪种类型的负载平衡器?我知道Microsoft ISA server有一个将原始用户IP地址传递到Web服务器的设置


否则,您将不得不编写一个页面来转储服务器变量,并查看是否添加了一个额外的服务器变量来提供真实的客户端IP地址。

根据负载平衡服务器,客户端IP可以/应该写入:

Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
但请注意,如果用户也在代理后面,则该值可能是代理原始客户端,而不是负载平衡器的客户端(在本例中为代理IP)。我不确定什么行为是“正常的”

希望有帮助,
Alex

我认为您不仅必须搜索HTTP\u X\u FORWARDED\u,而且还必须搜索所有这些内容,这取决于您使用的加载ballance

Context.Request.ServerVariables[CheckAllBelowList]

"HTTP_X_COMING_FROM",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_VIA",
"HTTP_COMING_FROM",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_FROM",
"HTTP_PROXY_CONNECTION",
"HTTP_CLIENT_IP",
"CLIENT_IP",
"FORWARDED",
其中一个的返回值,是你客户端的实际Ip,除非是其他代理,我还需要了解一些人如何得到这个,找到2-3代理背后的用户


如果您还认识其他人,请告诉我。

我如何才能用page做到这一点?我们已经检查了所有的变量,但是没有真正的ip。下面是一个简单的ASP.NET页面,它转储了所有的服务器变量:但是您也可以在ASP.NET中打开跟踪,在任何页面上显示许多类似的内容