ниже код так же, как ваш является лучше попытка получения клиентов DNS название машины:
Dim host As IPHostEntry
'Get the server variable value
host = Dns.GetHostEntry(HttpContext.Current.Request.ServerVariables.Item("REMOTE_HOST"))
Что вы делаете, используя переменную сервера REMOTE_HOST, запрашивает g на имя хоста , сделав запрос. Хорошо прочитал эту последнюю часть снова, и она дает ответ, почему она не всегда даст правильный результат.
Если у вас есть свой сайт на webfarm, который имеет балансировки нагрузки, сидящие перед ним, вы получите значение балансировки нагрузки, а не от оригинала клиента, делающего запрос. Вероятно, у «REMOTE_HOST» есть сведения о том, что это последний хост, делающий запрос. Вот почему использование этой переменной сервера ненадежно.
Это также угроза безопасности, поэтому JavaScript не позволяет получать эту информацию, так что это тоже не вариант. Просто исключительно ради информации, один старый способ переучивания старой школы, чтобы получить это, был с помощью элемента управления ActiveX, но это тоже не жизнеспособный вариант. Дело в том, что если вы не находитесь в домене и можете делать обратный поиск по IP, у вас, вероятно, нет согласованного и надежного способа получить авторизованное имя пользователя в 100% случаев.
Какая у вас ошибка? Что возвращает 'Request.ServerVariables.Item (« REMOTE_HOST »)? – jgauffin