2012-05-31 3 views
1

Когда я вызываю Dns.GetHostEntry («SomeServerName») из консольного приложения на своем рабочем столе, он отлично решает IP-адрес. Когда я выполняю тот же код в приложении ASP.NET, также работая на своем рабочем столе, я получаю SocketException с сообщением «Неизвестный хост».Не удается разрешить DNS в ASP.NET (работает в консоли)

Я чувствую, что может быть неправильно с установкой IIS/ASP.NET, но сейчас у меня нет времени, чтобы попробовать переустановить.

В качестве теста я изменил идентификатор учетной записи ASP.NET в machine.config, чтобы использовать собственные учетные данные сети, но это не имело никакого значения.

Любые идеи?

Update:

Кажется, мне нужно уточнить. У меня проблемы с сетевой связью из ASP.NET на моей рабочей станции. Сюда входит попытка отправить электронную почту с помощью SmtpClient, а также попытаться подключиться к IBM DB2 через соединение ODBC. Все это прекрасно работает при работе в консольном приложении. Основная причина, по-видимому, в том, что когда код работает под ASP.NET, разрешение DNS выходит из строя, хотя я понятия не имею, почему. Единственное различие, о котором я могу думать, - это контекст безопасности.

Update 2:

Вот некоторые результаты запуска Wireshark: Когда вызов сделан из консольного приложения, я сразу вижу 2 «Стандартные системы доменных имен запросов» посылается по сети. Когда один и тот же вызов выполняется из приложения ASP.NET, после задержки около 8 секунд я вижу, что 3 «Запросы службы NetBIOS имен» отправляются по сети. Любые идеи?

+0

любая удача с этим? – paulsm4

ответ

1

Проблема решена: антивирусная программа на моей рабочей станции явно блокировала исходящие соединения из IIS, якобы для предотвращения распространения червей по сети.

0

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/2a8ca3c8-e1ec-490a-a7e5-5ec533080f00/

Если передать IP-адрес литерал GetHostEntry он будет пытаться через DNS обратного разрешения вместо того, чтобы просто дать вам обратно IP-адрес. Если данные для успешного обратного решения не указаны на вашем сервере DNS , это не удастся. Если вам не нужен этот семантический (т. Е. Нет обратный поиск), используйте Dns.GetHostAddresses.

+0

Если бы это было так, как консольное приложение, так и приложение asp.net завершились бы неудачей? – Andomar

+0

В: Почему бы не попробовать (если, конечно, вы не хотите, чтобы требуется обратный поиск). В: Вы проверили какие-либо ошибки или внутренние исключения (кроме «неизвестного хоста»)? В: Что показывает nslookup? И помните: отладочная среда отладки «vhost» (которую вы можете использовать или не используете) вводит дополнительные ограничения. – paulsm4

+0

@Patrick J Collins - я бы не переустанавливал IIS или .Net - я не думаю, что это поможет. Я честно полагаю, что переход на GetHostAddresses() может заставить его работать. ИМХО ... – paulsm4

Смежные вопросы