Как получить имя компьютера текущего пользователя, если мое веб-приложение находится на сервере? [Дубликат]

29
задан abatishchev 27 August 2014 в 04:35
поделиться

7 ответов

Я работал, используя следующее:

string IP = Request.UserHostName;
string compName = CompNameHelper.DetermineCompName(IP);

код из compnamehelper:

public static string DetermineCompName(string IP)
{
    IPAddress myIP = IPAddress.Parse(IP);
    IPHostEntry GetIPHost = Dns.GetHostEntry(myIP);
    List<string> compName = GetIPHost.HostName.ToString().Split('.').ToList();
    return compName.First();
}
40
ответ дан Aaron Hudon 15 August 2018 в 23:50
поделиться
  • 1
    Обратите внимание, что это не даст ожидаемого результата, если клиент находится за NAT, но, скорее всего, это не проблема, так как вы находитесь в «интранете». – Niklas 14 May 2010 в 11:37
  • 2
    Он работает как шарм. Но небольшие изменения я должен был сделать для получения IP. string ip = HttpContext.Request.UserHostName.ToString (); отдых отлично работает .. +1 – Vinnie 16 August 2013 в 21:48
  • 3
    Ну, он может работать только в локальной сети, но он не будет работать в Интернете. – CodeIt 7 October 2017 в 15:42

Единственный способ, которым я знаю обследовать клиента, - это коллекция ServerVariables объекта Request (должна быть доступна для кода MVC).

См. http: //www.4guysfromrolla. com / webtech / 092298-3.shtml для получения дополнительной информации. REMOTE_HOST и REMOTE_ADDR выглядят как кандидаты.

0
ответ дан David Andres 15 August 2018 в 23:50
поделиться

Нет. Имя компьютера клиента недоступно на сервере. Это характер HTTP-запроса-ответа. У вас может быть только IP-адрес.

Обходные пути могут заключаться в том, чтобы получить машину на клиенте из Flash / Silverlight (я сомневаюсь, что JavaScript) и добавить в файл cookie, который доступен на сервере с каждым запросом. Но с этим подходом существует целый ряд проблем.

3
ответ дан Dmytrii Nagirniak 15 August 2018 в 23:50
поделиться
  • 1
    есть ли метод поиска имен компьютеров с помощью ip? – Jimmy 18 September 2009 в 14:50
  • 2
    Вы можете получить имя компьютера из своего IP-адреса, сделав звонок на DNS-сервер – Mahesh Velaga 19 September 2009 в 15:17

код в VB:

Dim myIP As IPAddress = IPAddress.Parse(Request.UserHostName)
    Dim GetIPHost As IPHostEntry = Dns.GetHostEntry(myIP)
    Dim compName As List(Of String) = GetIPHost.HostName.ToString.Split("").ToList

    return(compName.First)
4
ответ дан hosein kardoost 15 August 2018 в 23:50
поделиться

Попробуйте следующее:

string name = Request.UserHostName;
1
ответ дан Matt Wrock 15 August 2018 в 23:50
поделиться
  • 1
    Не работает, вернулось имя веб-сервера. То же самое с System.Net. – Ken Mc 16 November 2016 в 22:39

Вот только IE-решение. Он работает в IE8 с несколькими предупреждениями о безопасности.

<script type="text/javascript" language="javascript">
   var ax = new ActiveXObject("WScript.Network");
   document.write(ax.UserName + '<br />'); //logged in account name
   document.write(ax.ComputerName + '<br />'); //Windows PC name
</script>
-2
ответ дан p.campbell 15 August 2018 в 23:50
поделиться

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

  • cookie, который устанавливается, когда пользователь самостоятельно выбирает свое местоположение
  • , имеющего вход пользователя на сайт, чтобы вы могли отслеживать их однозначно таким образом
  • , помнящего пользователя по IP-адресу

Невозможно обеспечить удаленное имя хоста уникальный. Такая же проблема возникает с IP-адресом из-за прокси-серверов, динамического IP и т. Д., Но я думаю, что это будет немного более надежным. Кроме того, вы можете выполнить геолокацию по IP-адресу.

0
ответ дан RedFilter 15 August 2018 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: