Условия ошибки и методы разрешения Dns.GetHostEntry

У меня очень специфическая проблема, связанная с Dns.GetHostEntry:

Служба использует Dns. GetHostEntry для получения всех IP-адресов хоста, используя имя хоста. Это всегда работало нормально. У конкретного клиента Dns.GetHostEntry выдает ошибку «такой хост не известен» при запросе определенных хостов. Проблема возникает только при попытке разрешить узлы, которые находятся в другом домене, чем компьютер, на котором установлена ​​служба. Служба работала довольно долго, но в последнее время перестала работать, выдает ошибку «такой хост не известен» (к сожалению, трассировка стека недоступна). Но nslookup работает, проблем нет. Рассматриваемая служба написана на VB.NET и предназначена для .NET Framwork 2.0.

Комментарии в записи MSDN для .NET 3.0 ( http://msdn.microsoft.com/en-us/library /ms143998(v=VS.85).aspx указывают на то, что может быть проблема с записями обратного DNS для хостов, но мне не удалось воспроизвести проблему в тестовой сети, даже со всеми зонами обратного просмотра удалено (есть и другие комментарии к другим версиям .NET, у всех схожие проблемы). [EDIT:] Даже преднамеренное добавление неправильной записи PTR не приведет к возникновению проблемы на моей тестовой машине.

[EDIT2:] Единственное, что вызывало ошибку, - это отключение сетевого адаптера, что сделало DNS-сервер недоступным, хотя прямое разрешение все еще работало из-за кэширования.

Итак, у меня следующие вопросы:

  1. При каких условиях GetHostEntry выдает именно эту ошибку?
  2. Какие методы разрешения он использует? Если я не ошибаюсь, здесь используется неуправляемая функция WinSock getnameinfo ( http://msdn.microsoft.com/en-us/library/ms738532 (v = vs.85) .aspx ) ,: " Разрешение имен может осуществляться системой доменных имен (DNS), файлом локальных хостов, или другими механизмами именования ».
  3. Любые идеи, почему это внезапно перестает работать для машин в другом домене (но не для машин в тот же домен)?

С уважением, cun83

13
задан cun83 7 February 2011 в 09:38
поделиться