2012-04-03 12 views
0

Dieser Code funktioniert auf meinem System nicht im Server bitte helfen Sie mir, diesen Fehler zu beheben. bin nicht sicher, was Fehler ist ..Get System-IP-Code funktioniert nicht im Server

Das ist mein Teil-Code ...

private IPAddress getMyCurrentIP() 
{ 
    IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName()); 

    if (host.AddressList.Length == 1) 
    myCurrentIP = host.AddressList[0].ToString(); 
    else 
    { 
     foreach (IPAddress address in host.AddressList) 
     { 
      if (address.AddressFamily == AddressFamily.InterNetwork) 
      { 
      if (IsLocal(address)) 
      return address; 
     } 
     } 
    } 


    return null; 
} 

    public bool IsLocal(IPAddress address) 
    { 
    if (address == null) 
    throw new ArgumentNullException("address"); 

    byte[] addr = address.GetAddressBytes(); 

    return addr[0] == 10 
    || (addr[0] == 192 && addr[1] == 168) 
    || (addr[0] == 172 && addr[1] >= 16 && addr[1] <= 31); 
    } 

mir bitte helfen, diesen Fehler zu beheben ...

+3

Und dieser Code ist kaputt ... wie? Meine Kristallkugel ist heute im Laden ... –

+0

Wenn nur eine IP in der Liste ist, überprüfen Sie nicht AddressFamily und IsLocal. Debuggen ist das einzige wirkliche Waty, das zu beheben, da es davon abhängt, dass die Maschine eingerichtet ist, aber es scheint Lücken in Ihrer Logik zu geben, die groß genug sind, um einen Bus durch zu fahren. –

Antwort

0

ich die angegebene Code nicht Sache würde kompilieren, da Sie niemals myCurrentIP deklarieren. Wenn in host.AddressList nur ein Element vorhanden ist, gibt Ihre Funktion weiterhin null zurück. Re-schreiben Sie die erste Bedingung wie folgt aus:

if (host.AddressList.Length == 1) 
{ 
    return host.AddressList[0]; 
} 
else 
{ 
    ... 

, dass die erste und einzige IP-Adresse des Systems zurückkehren würde, wenn diese Bedingung erfüllt ist.

+0

mycurrentIp als Zeichenfolge, die global deklariert ist. Der obige Code funktioniert in meinem System einwandfrei. Und hat nicht im Server funktioniert. Bitte helfen Sie mir, diesen Fehler zu beheben – FDO

+0

@FDO müssen Sie weitere Informationen geben. Was funktioniert nicht? Gibt es eine Ausnahme? Gibt die Funktion die erwartete IP-Adresse nicht zurück? Sie müssen spezifisch sein. Ohne weitere Informationen kann ich nur vorschlagen, dass Sie Ihre DNS-Einstellungen auf dem Server überprüfen. Dies wäre eine wahrscheinliche Quelle für Probleme in Ihrem Code. –