前言
最近开始做牛腩新闻发布系统,刚接触网页开发,因为没有基础,做起来比较困难,当然BUG就多了。不过“牛”老师水平很高,讲的很清楚,出现BUG分分钟就可以搞定。在做评论新闻这一功能时,需要获取本机的IP地址。这时就出现BUG了。
BUG
根据“牛”老师的方法:
IP = Request.ServerVariables["REMOTE_ADDR"];
用这个方法获取IP地址,可是我去数据库看的时候却是 ::1 这样的:
然后上百度上查,造成这种情况的原因,百度上有各种说法。 通过分析鄙人认为这个方法Request.ServerVariables[“REMOTE_ADDR”],可能解析是的IPV6的地址。而我们需要的IPV4.
解决办法
string hostName = Dns.GetHostName(); //获取本机名
IPHostEntry IpEntry = Dns.GetHostEntry(hostName);
for (int i = 0; i < IpEntry.AddressList.Length; i++)
{
//从IP地址列表中筛选出IPv4类型的IP地址
//AddressFamily.InterNetwork表示此IP为IPv4,
//AddressFamily.InterNetworkV6表示此地址为IPv6类型
if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
{
IP= IpEntry.AddressList[i].ToString();
}
}
Dns.GetHostEntry()
Dns.GetHostEntry(主机名) :这个方法可以获取本机的IP地址,不论是IPV4还是IPV6都可以。返回值是一个实体。当我断点看了一下实体里的东西,就恍然大悟了。还等什么呢 ,赶快去试试吧