2011-02-04 25 views
7

私はDns.GetHostEntryに関する非常に特定の問題を抱えている:Dns.GetHostEntryエラー条件と解決方法

サービスは、ホストの名前を使用して、ホストのすべてのIPなアドレスはを取得するためにDns.GetHostEntryを使用しています。これはいつもうまくいっています。 特定の顧客では、Dns.GetHostEntryは特定のホストに問い合わせるときに「そのようなホストはわかっていません」というエラーをスローします。この問題は、サービスがインストールされているマシンとは異なるドメインにあるホストを解決しようとしている場合にのみ発生します。このサービスはかなり長い間働いていましたが、最近は "停止しているホストはありません"というエラー(悲しいことに、スタックトレースが利用できません)が投げられています。 Nslookupは動作しますが、問題はありません。 問題のサービスはVB.NETで記述され、.NET Framwork 2.0を対象としています。

.NET 3.0のMSDNエントリのコメント(http://msdn.microsoft.com/en-us/library/ms143998(v=VS.85).aspx)は、ホストの逆DNSエントリに問題がある可能性があると指摘していますが、逆の場合でもテストネットワークで問題を再現できませんでした[編集:]誤ってPTRレコードを誤って追加しても、テストマシンで問題が発生することはありません。

[EDIT2:] [編集:]他の.NETバージョンのコメントが他にもあります。エラーの原因となったのは、ネットワークアダプタの接続を切断して、DNSサーバーを使用できなくすることだけでした。ただし、キャッシュのために前方解決が実行されたにもかかわらず、このままでした。

私の質問は以下の通りです:

  1. GetHostEntryはこの特定のエラーをスローしますか?
  2. どの解決方法を使用しますか?もし私が間違っていないなら、それは管理されていないWinSock関数getnameinfo(http://msdn.microsoft.com/en-us/library/ms738532(v=vs.85).aspx)を使っています: "ドメインネームシステム(DNS)、ローカルホストファイル、または他の命名メカニズムによる名前解決が可能です。
  3. これが突然他のドメインのマシンでは失敗する理由はありますか(同じドメインのマシンではありません)。

おかげで、よろしく、 cun83

+0

ローカルコンピュータで "ipconfig/flushdns"を実行し、PTRレコードを変更した後にDNSサーバーを再起動しましたか?キャッシュされた結果を使用している可能性があります –

+0

はい、私はキャッシュをフラッシュし、何もキャッシュされていないことを確認するためにDNSサーバーサービスとクライアントサービスを再起動しました。 – cun83

答えて

5

私は個人的にいつもDns.GetHostAddressesを使用しています。常に信頼できる結果をもたらします。

なぜDns.GetHostEntryが指定されたエラーを出すのかについては、DnsGetHostEntryがあなたにIPアドレスを返す前に逆DNSルックアップを試みることによると思われます。 DNSの逆引きルックアップが失敗すると、「そのようなホストは知られていません」と表示されます。

私が知る限り、Dns.GetHostAddressesはIPアドレスを返します。

関連する問題