Déterminer le nom de L'ordinateur du Client

Je construis un site intranet qui affichera différentes listes en fonction du nom de l'ordinateur car différents ordinateurs se trouvent dans des zones différentes, existe-t-il un moyen (dans un contrôleur ou un modèle) de déterminer le nom de l'ordinateur du client?

J'ai essayé le système.environnement.machinename mais cela ne renvoie que le nom du serveur, d'autres idées?

30
demandé sur abatishchev 2009-09-18 17:36:00

7 réponses

Je l'ai fait fonctionner en utilisant ce qui suit:

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

Code de 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
répondu Jimmy 2017-11-20 18:19:52

Code dans 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
répondu hosein kardoost 2014-10-16 15:13:36

Non. Le nom de l'ordinateur du client n'est en aucun cas disponible sur le serveur. C'est la nature de la requête-réponse http. Vous ne pouvez avoir que son adresse IP.

Une solution de contournement pourrait être de récupérer la machine sur le client à partir de Flash / Silverlight (je doute que JavaScript) et de mettre dans le cookie qui est disponible sur le serveur à chaque requête. Mais il y a toute une pile de problèmes avec cette approche.

3
répondu Dmytrii Nagirniak 2009-09-18 13:45:43

Essayez ceci:

string name = Request.UserHostName;
1
répondu Matt Wrock 2009-09-18 13:51:09

La seule façon que je connaisse pour inspecter le client est via la collection ServerVariables sur L'objet Request (devrait être disponible pour le code MVC).

Voir http://www.4guysfromrolla.com/webtech/092298-3.shtml pour plus d'informations. REMOTE_HOST et REMOTE_ADDR ressemblent à des candidats.

0
répondu David Andres 2009-09-18 13:44:27

Je pense que vous feriez mieux d'utiliser l'une de ces méthodes pour lier un utilisateur à un emplacement:

  • un cookie qui est défini une fois que l'utilisateur sélectionne lui-même son emplacement
  • avoir l'utilisateur se connecter au site afin que vous puissiez les suivre de manière unique
  • Se souvenir de l'utilisateur par adresse IP

Il n'y a aucun moyen de s'assurer que les noms d'hôtes distants sont uniques. Le même problème se produit avec IP en raison de proxies, IP dynamique, etc., mais je pense que ce sera un peu plus fiable. Aussi, vous peut faire la géolocalisation par adresse IP.

0
répondu RedFilter 2009-09-18 13:44:49

Voici une solution IE uniquement. Il fonctionne dans IE8, avec plusieurs avertissements de sécurité.

<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
répondu p.campbell 2009-09-18 13:52:51