【问题标题】:Get User's IP Address in a Share Point Web Part not giving valid IP address在未提供有效 IP 地址的 Share Point Web 部件中获取用户的 IP 地址
【发布时间】:2013-07-21 15:45:39
【问题描述】:

标准自定义 WebPart 中的此代码:

private string GetUserIP()
{
     return Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? Request.ServerVariables["REMOTE_ADDR"];

}

正在返回:"fe80::c564:7922:d873:5cf5%11",而不是有效的 IP 地址。它对我在 Google 上找到的所有检索方法都执行此操作,包括 HttpRequest.UserHostAddress。

有人知道发生了什么吗?

编辑:由于某种原因,它在本地加载页面时给了我 IPv6,但当我从另一台机器访问时,它按预期工作:/

【问题讨论】:

  • 一个有效的IP地址。 IPv6。
  • @J.斯蒂恩:你说得对。由于某种原因,在我的开发服务器上,它返回的是 IPv6 IP 而不是 IPv4。当我远程访问同一台服务器时它可以工作......

标签: c# sharepoint-2010 web-parts


【解决方案1】:

使用这个,

string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ip))
{
    ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}

或者使用

string ipAddress = Request.UserHostAddress

【讨论】:

  • 那是...基本相同的代码,除了它还检查空字符串。这并没有改变 OP 正在获取 IPv6 地址这一事实,而他们显然想要一个 IPv4 地址。
  • Request.UserHostAddress 等同于Request.ServerVariables["REMOTE_ADDR"]
猜你喜欢
  • 2011-02-06
  • 2014-09-27
  • 2016-12-01
  • 2018-09-19
  • 2013-08-01
  • 2012-06-12
  • 2013-09-21
  • 1970-01-01
  • 2023-03-09
相关资源
最近更新 更多