Я использовал такой код, чтобы найти имя удаленного пользователя:
banner_label.Text = "Welcome, <B>" + User.Identity.Name + "</B>!"
Я также хотел бы найти имя удаленного хоста. Моя производственная среда будет представлять собой корпоративную интрасеть с активным каталогом.
Другими словами: вы увидите разметку <b>, а не текст, выделенный жирным шрифтом.
Гм, нет ... Ярлыки не выводятся автоматически из HTML. Я только что протестировал.





может это сработает для тебя
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-адресу интернет-провайдером.
System.Net.DNS.GetHostName, вероятно, вернет только имя хоста сервера.
Вы находитесь в интрасети, поэтому 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
Просто предупреждение: элемент управления меткой автоматически заменит ваш <на <