Как мне найти имя удаленного хоста в asp.net?

Я использовал такой код, чтобы найти имя удаленного пользователя:

banner_label.Text = "Welcome, <B>" + User.Identity.Name + "</B>!"

Я также хотел бы найти имя удаленного хоста. Моя производственная среда будет представлять собой корпоративную интрасеть с активным каталогом.

Просто предупреждение: элемент управления меткой автоматически заменит ваш <на <

Joel Coehoorn 11.11.2008 21:11

Другими словами: вы увидите разметку <b>, а не текст, выделенный жирным шрифтом.

Joel Coehoorn 11.11.2008 21:12

Гм, нет ... Ярлыки не выводятся автоматически из HTML. Я только что протестировал.

FlySwat 11.11.2008 21:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
3
15 308
4

Ответы 4

может это сработает для тебя

Request.UserHostName

редактировать:

Я думаю, что то, что вы пытаетесь сделать, не будет работать через Интернет, вы пытаетесь получить имя компьютера, которое не будет передано с запросом на сервер.

Я считаю, что вы можете использовать HttpContext.Current.Request.ServerVariables["REMOTE_HOST"], но имейте в виду, что информация довольно ненадежна. Все, что вам присылают, можно подделать.

Кроме того, я не думаю, что это будет работать через Интернет.

Я погуглил и нашел Request.UserHostName, но это вернуло только 127.0.0.1 в моей среде разработки.

Я пробовал это

System.Net.DNS.GetHostName

И это успешно вернуло мое имя хоста. Однако, поскольку я все еще в разработке, с моим клиентом и сервером на одном компьютере, мне все еще нужно протестировать, чтобы убедиться, что он действительно дает мне имя удаленного хоста вместо имени сервера.

это вернет только 127.0.0.1 в вашей среде разработки, в производстве это будет IP-адрес клиента. вы можете выполнить обратный поиск по DNS, но это не даст вам имя компьютера, оно даст вам имя, которое было присвоено этому IP-адресу интернет-провайдером.

John Boker 11.11.2008 21:32

System.Net.DNS.GetHostName, вероятно, вернет только имя хоста сервера.

FlySwat 11.11.2008 21:36

Вы находитесь в интрасети, поэтому Request.UserHostName должен вам подойти. Если у вас сложная сеть, некоторые маршрутизаторы могут не пропускать эту информацию, но ...

Вот что-то подобное, что я сделал в приложении на предыдущем задании, чтобы записать IP-адрес и имя хоста:

// NAT'ed addresses are sometimes still shown in HTTP_X_FORWARDED_FOR
string userHost = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

if (String.IsNullOrEmpty(userHost) || String.Compare(userHost, "unknown", true) == 0)
    userHost = Request.UserHostAddress;

if (String.Compare(userHost, Request.UserHostName) != 0)
    userHost += " (" + Request.UserHostName + ")";

Затем я записываю эту строку в базу данных при каждой попытке входа в систему.


Обновлено: просмотрел ваш ответ выше ... подумал, что этот код сделал то, о чем вы просите, позвольте мне проверить его и посмотреть.


Не уверен, почему приведенный выше код работал на моей предыдущей работе. Это было ненадежно, поэтому я поставил вокруг него оператор if, но я думал, что он вернул имя хоста полунадежно ... Сообщения в Интернете говорят, что это как-то связано с анонимным доступом.

В любом случае, это дает вам то, что вы хотите, и должно работать надежно, поскольку вы находитесь в интрасети:

System.Net.Dns.GetHostEntry(userHost).HostName

Другие вопросы по теме