Определение имени клиентского компьютера
Я создаю сайт интрасети, который будет отображать разные списки на основе имени компьютера, потому что разные компьютеры находятся в разных областях, есть ли способ (внутри контроллера или модели) определить имя клиентского компьютера?
Я попробовал system.environment.machinename, но это только возвращает имя сервера, любые другие идеи?
Ответы
Ответ 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>