Я работал, используя следующее:
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();
}
Единственный способ, которым я знаю обследовать клиента, - это коллекция ServerVariables объекта Request (должна быть доступна для кода MVC).
См. http: //www.4guysfromrolla. com / webtech / 092298-3.shtml для получения дополнительной информации. REMOTE_HOST и REMOTE_ADDR выглядят как кандидаты.
Нет. Имя компьютера клиента недоступно на сервере. Это характер HTTP-запроса-ответа. У вас может быть только IP-адрес.
Обходные пути могут заключаться в том, чтобы получить машину на клиенте из Flash / Silverlight (я сомневаюсь, что JavaScript) и добавить в файл cookie, который доступен на сервере с каждым запросом. Но с этим подходом существует целый ряд проблем.
код в 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)
Попробуйте следующее:
string name = Request.UserHostName;
Вот только 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>
Я думаю, что вам лучше использовать один из этих методов, чтобы привязать пользователя к местоположению:
Невозможно обеспечить удаленное имя хоста уникальный. Такая же проблема возникает с IP-адресом из-за прокси-серверов, динамического IP и т. Д., Но я думаю, что это будет немного более надежным. Кроме того, вы можете выполнить геолокацию по IP-адресу.