Подтвердить что ты не робот

Определение имени клиентского компьютера

Я создаю сайт интрасети, который будет отображать разные списки на основе имени компьютера, потому что разные компьютеры находятся в разных областях, есть ли способ (внутри контроллера или модели) определить имя клиентского компьютера?

Я попробовал system.environment.machinename, но это только возвращает имя сервера, любые другие идеи?

4b9b3361

Ответ 1

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

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();
}

Ответ 2

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

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

Ответ 3

код в 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

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

string name = Request.UserHostName;

Ответ 5

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

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

Ответ 6

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

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

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

Ответ 7

Здесь есть только 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>