2012-04-03 7 views
0

このコードはサーバ上で動作している私のシステムで動作します。このエラーを修正するのを手伝ってください。サーバでシステムのIPコードが機能しない

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); 
    } 

...これは私の部分のコード..です

エラーが何であるかわからない、私は事与えられたコードは希望しません

+3

このコードは壊れています...どうですか?私のクリスタルボールは今日のお店にあります... –

+0

リストにIPが1つしかない場合、なぜAddressFamilyとIsLocalをチェックしていませんか?デバッグはこれを修正する唯一の本当の方法ですが、マシンが設定されているかどうかによって異なりますが、バスをドライブするのに十分な大きさのロジックにギャップがあるように見えます。 –

答えて

0

...このエラーを修正するために私を助けてくださいmyCurrentIPを決して宣言していないので、コンパイルしてください。また、host.AddressListに1つの項目しかない場合でも、関数はnullを返します。その条件が満たされた場合、システムの最初で唯一たIPAddressを返します

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

: このような第一の条件を再書き込み。

+0

グローバル宣言されている文字列としてのmycurrentIp。上記のコードは私のシステムで正常に動作します。そして、サーバーでは動作しませんでした。このエラーを修正するのを手伝ってください。 – FDO

+0

@FDOあなたはもっと情報を与える必要があります。何が効いていないのですか?例外はありますか?関数は予期したIPAddressを返しませんか?あなたは具体的にする必要があります。詳細がなければ、私が提案できるのは、サーバー上のDNS設定を確認することだけです。それらはあなたのコードの問題の原因になるでしょう。 –

関連する問題