2013-07-22 21 views
0

此代码用户的IP地址:获取共享点Web部件没有给予有效的IP地址在标准定制的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加载页面局部时,但是,当我从不同的计算机访问意作品:/

+5

*是一个有效的IP地址。 IPv6的。 –

+0

@J。斯蒂恩:你是对的。出于某种原因,我的开发服务器将返回IPv6 IP而不是IPv4。当我远程访问同一台服务器时,它工作正常...... – JCleveland

回答

-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 
+0

这是......基本上相同的代码,除了它还检查空字符串。它不会改变OP获取IPv6地址的事实,当他们明显需要IPv4地址时。 –

+0

Request.UserHostAddress与Request.ServerVariables [“REMOTE_ADDR”]相同。 –