Determina il nome del computer del cliente

Sto costruendo un sito intranet che visualizzerà diversi elenchi in base al nome del computer perché diversi computer si trovano in aree diverse, esiste un modo (all’interno di un controller o di un modello) per determinare il nome del computer del cliente?

Ho provato system.environment.machinename ma questo restituisce solo il nome del server, altre idee?

L’ho fatto funzionare usando il seguente:

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

codice da compnamehelper:

 public static string DetermineCompName(string IP) { IPAddress myIP = IPAddress.Parse(IP); IPHostEntry GetIPHost = Dns.GetHostEntry(myIP); List compName = GetIPHost.HostName.ToString().Split('.').ToList(); return compName.First(); } 

codice in 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) 

No. Il nome del computer del cliente non è disponibile in alcun modo sul server. Questa è la natura della richiesta-risposta http. Puoi solo avere il suo indirizzo IP.

Una soluzione alternativa potrebbe essere quella di recuperare la macchina sul client da Flash / Silverlight (dubito di JavaScript) e inserire un cookie che è disponibile sul server ad ogni richiesta. Ma c’è un mucchio di problemi con questo approccio.

Prova questo:

 string name = Request.UserHostName; 

L’unico modo che conosco per ispezionare il client è attraverso la raccolta ServerVariables sull’object Request (dovrebbe essere disponibile per il codice MVC).

Vedi http://www.4guysfromrolla.com/webtech/092298-3.shtml per ulteriori informazioni. REMOTE_HOST e REMOTE_ADDR sembrano candidati.

Penso che tu stia meglio usando uno di questi metodi per bind un utente a una posizione:

  • un cookie che viene impostato una volta che l’utente seleziona automaticamente la propria posizione
  • avere l’accesso dell’utente al sito in modo che sia ansible seguirli in modo univoco in questo modo
  • ricordando l’utente tramite l’indirizzo IP

Non c’è modo di garantire che gli hostname remoti siano unici. Lo stesso problema si verifica con IP a causa di proxy, IP dinamico, ecc., Ma penso che sarà un po ‘più affidabile. Inoltre, puoi effettuare la geolocalizzazione in base all’indirizzo IP.

Ecco una soluzione solo IE. Funziona in IE8, con più avvisi di sicurezza.