public class Configs
    {
public static string GetCity() 
        {
            System.Net.IPAddress addr;
            // 获得拨号动态分配IP地址 
            addr = new System.Net.IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[1].Address);
            return addr.ToString(); 
        }
    }这个方法报错:索引超出了数组界限Ip城市地址

解决方案 »

  1.   

    你单步调试看看AddressList的值,你要的值可能存在于AddressList[0]中
      

  2.   

    Dns.GetHostByName(Dns.GetHostName()).AddressList[0]
    {192.168.0.234}
        Address: 3925911744
        AddressFamily: InterNetwork
        IsIPv6LinkLocal: false
        IsIPv6Multicast: false
        IsIPv6SiteLocal: false
        IsIPv6Teredo: false
        ScopeId: “Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ScopeId”引发了“System.Net.Sockets.SocketException”类型的异常
    Dns.GetHostByName(Dns.GetHostName()).AddressList[1]
    数组索引超出界限
    Dns.GetHostByName(Dns.GetHostName()).AddressList[2]
    数组索引超出界限
    Dns.GetHostByName(Dns.GetHostName()).AddressList[3]
    数组索引超出界限
      

  3.   

    //直接一句话
    public static string GetCity() 
    {
            return new StreamReader(WebRequest.Create("http://iframe.ip138.com//ic.asp").GetResponse().GetResponseStream(),Encoding.Default).ReadToEnd();
    }
      

  4.   

    改成这样试试:
    addr = new System.Net.IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0]);