System.Web.HttpContext.Current.Request.UserHostAddress;
我使用以下代码来获取用户IP地址,但发生了一些奇怪的事情。 我是,每次都收到相同的IP地址,无论我是在桌面上还是在我的iPhone上。 当我从桌面上点击页面时,我在我们的网络中,网络服务器就在那里,但在我的iPhone上,我甚至不在建筑物中。 我以前没遇到过这个问题,我要回的IP地址是分配给Web服务器的内部地址。
string ip = System.Web.HttpContext.Current.Request.UserHostAddress; Response.Write(ip);
在我的网络之外我仍然得到相同的IP地址172.16.0.22这是一个路由器地址,而不是我们的外部IP。 有没有办法获取外部IP地址。
请参阅此链接http://thepcspy.com/read/getting_the_real_ip_of_your_users/
// Look for a proxy address first _ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; // If there is no proxy, get the standard remote address if (_ip == null || _ip.ToLower() == "unknown") _ip = Request.ServerVariables["REMOTE_ADDR"];
我希望这次能够得到解决,我遇到了同样的问题。 和我们一样,我知道IP地址是网络上的服务器之一(Load Balancer)。
如果您的解决方案是负载均衡的Web服务器,那么您的负载均衡器很可能正在更新请求标头信息,通过某些软件负载均衡器重新路由。
如果是本地测试,请更新路由器配置以传递请求详细信息。 阅读一些路由器配置手册,应该有一些将具有此设置。 🙂
提供您的路由器信息,有人将拥有路由器/硬件知识。
我不是硬件专家,但要求您的网络管理员按原样传递标头信息,或者至少更新“X-Forwarded-For”信息。 因此,您可以构建代码以一致地读取此信息。
在此处查找有关行业和问题中使用的流量路由技术的更多信息。
桑杰
试试这个;
if (!String.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"])) ipAddress = HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"]; else ipAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
Request.UserHostAddress
返回IIS运行的服务器IP。
- 如何在HttpRuntime.Cache中获取对象的大小?
- 任何人都可以告诉为什么在使用StreamWriter保存数据时仍然显示以前的数据
- Updatepanel中用户控件内的按钮的回发触发器
- 在LocalSystem或LocalService帐户下运行AppPool时,从ASP.NET应用程序重新启动服务器
- .Net MVC4文化设置正确,但validation仍然是英文
- 按Enter键时提交登录控制按钮
- ASP.NET DefaultMembershipProvider的哈希函数中是否存在错误?
- 带有MVC3和EF4 CTP5w的JSON序列化的循环引用exception
- 分析器错误消息:文件’/TestSite/Default.aspx.cs’不存在