【问题标题】:Client IP using C#使用 C# 的客户端 IP
【发布时间】:2011-05-31 21:37:54
【问题描述】:

如何在 C# 中获取客户端机器的 IP 地址? 我想为我的在线应用程序保留一个日志寄存器并保留日志系统的 IP 地址我想获取客户端的 IP 地址....

提前谢谢...

【问题讨论】:

标签: c# asp.net ip


【解决方案1】:
    String clientIP = 
(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]==null)?
HttpContext.Current.Request.UserHostAddress:
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

【讨论】:

  • 作为维基百科notes,此标头的值可能是伪造的。因此,保留您信任的 IP 白名单会更安全。
  • String clientIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]?? HttpContext.Current.Request.UserHostAddress 这不是更具可读性吗? +1 一个用于代理检查
  • 确实它更具可读性,但我不确定 .Net 版本 OP 正在使用。
【解决方案2】:
HttpContext.Current.Request.UserHostAddress

这不会尝试考虑代理。为此,您可以使用Request.ServerVariables["HTTP_X_FORWARDED_FOR"]。但是,请确保您不要盲目相信它,因为它可能是伪造的。最好保留您信任的 IP 白名单。

【讨论】:

  • 它不会工作。它返回 127.0.0.1 。我的系统在网络中。我想要客户端系统的实际 IP 地址
  • @Nithesh,它正在工作。那实际连接到服务器的IP。这意味着你的服务器在localhost
猜你喜欢
  • 2013-02-22
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
相关资源
最近更新 更多