【问题标题】:get Client public Ip address in web api在 web api 中获取客户端公共 IP 地址
【发布时间】:2014-04-29 09:16:51
【问题描述】:

我正在使用一项服务来根据 IP 地址获取客户国家/地区,但是当我使用 UserHostAddress 时它是通过 web api rest 服务制作的,它仅在我将其发送到服务时才显示内部 IP显示错误的国家/地区是否有任何解决方案可以获取国家/地区或 IP 地址

【问题讨论】:

  • 我不确定你在问什么。您是否从内部 IP 调用服务器? UserHostAddress 显示服务器看到的 IP。如果客户端位于 NAT 防火墙后面,这将是“公共”IP。否则,它是客户端的实际 IP。服务器不知道也不关心那个地址是什么。
  • UserHostAddress gives wrong IPs 的可能重复项
  • 你能试试吗,string SourceIP = String.IsNullOrEmpty(Request.ServerVariables["HTTP_X_FORWARDED_FOR"]) ? Request.ServerVariables["REMOTE_ADDR"] : Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

标签: asp.net-mvc asp.net-web-api


【解决方案1】:

如果你有本地ip,而你的路由器有真实的,你的电脑只和路由器通信,路由器和互联网通信。获取路由器IP有两种方式:

  1. 向显示您的 IP 的某个站点发送 http 请求并从那里获取它。
  2. 连接路由器接口,直接从路由器获取IP。

【讨论】: