为什么ServerVariable会返回服务器IP?我有以下代码:stringip=Request.ServerVariables["REMOTE_ADDR"];在测试环境中它确实返回用户IP地址,但是当我们将网站部署到生产环境时,此变量具有托管应用程序的服务器的IP。帮助?我的猜测是中间有一个代理。首先使用HTTP_X_FORWARDED_FOR,如果为null,则使用REMOTE_ADDR来自MSDN文章:虽然仅检索REMOTE_ADDR服务器变量就足够了,但我发现在线资源建议此类代码还应检查HTTP_X_FORWARDED_FOR变量;如果请求来自代理服务器以获取转换后的地址,则此变量包含正确的地址。如果请求不存在的服务器变量,ServerVariables属性将返回一个空字符串。因此,即使这个属性没有出现在我的测试中,尝试检索它的值也不应该造成麻烦。更新:如果您更改了负载均衡器的设置,您应该询问他们是否可以传递原始IP。我知道这可以通过Microsoft的ISA服务器来完成。如果这不是一个选项,那么您可以尝试这些其他服务器变量并查看它们是否产生结果:""CLIENT_IP""FORWARDED"为什么使用旧的VB样式服务器变量而不是Request.UserHostAddress?请参阅MSDN库。正如其他人所说,如果它没有使请求看起来像是来自原始客户端,那么您将获得反向代理/SSL终结器的IP地址(至少在ISA服务器中,并且可能在大多数其他服务器中)反向代理)。如果不是,您将获得客户端的公共地址(可能是客户端站点的路由器地址,因为大多数LAN都是NAT的)。您在生产环境中的设置与测试环境有何不同?您实际上是在获取Web服务器的IP地址,还是同一网络上其他服务器的IP地址?我看到这是一个老问题,但我遇到了它,我想我知道答案了。答案比上面那些简单...我今天遇到了同样的问题。我打赌你正试图从你从XMLHTTP调用的页面获取IP,这将返回服务器IP,因为它是发出请求的页面,而不是用户。以上是C#学习教程:ServerVariable为什么返回服务器IP?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
