2009-09-18 103 views
26

我建立一個內部網站,將顯示基於計算機名稱不同的列表,因爲不同的計算機都在不同的領域,有沒有辦法(控制器或模型中),以確定客戶端的計算機名稱?確定客戶端的計算機名稱

我已經試過system.environment.machinename但只返回服務器的名稱,任何其他的想法?

回答

34

我得到它的工作使用下列內容:從compnamehelper

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

代碼:在VB

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

請注意,如果客戶端位於NAT之後,這不會給您預期的結果,但有可能是因爲您在「Intranet」上,所以這不是問題。 – Niklas 2010-05-14 10:37:49

+0

這是一種魅力。但是爲了獲得IP,我必須做出很小的改變。 string ip = HttpContext.Request.UserHostName.ToString();休息是真棒工作.. +1 – Vinnie 2013-08-16 20:48:46

+0

那麼,它可能只適用於局域網,但它不會在互聯網上工作。 – CodeIt 2017-10-07 15:42:06

0

我認爲你最好使用這些方法之一來把用戶綁定在一個位置:

  • 被設置,一旦用戶自主選擇具有用戶登錄到他們的位置
  • 一個cookie該網站讓你可以跟蹤唯一他們這樣
  • 通過IP地址

記住用戶沒有確保遠程主機名是唯一的方式。由於代理,動態IP等原因,IP出現同樣的問題,但我認爲它會更可靠一些。另外,您可以通過IP地址進行地理定位。

3

號的客戶端的計算機名稱不是在服務器上的任何方式使用。這是http請求 - 響應的性質。你只能擁有它的IP地址。

一個解決辦法可能是從Flash/Silverlight的(我懷疑的JavaScript)在客戶機上取回機器,放入到餅乾這是可用的每個請求在服務器上。但是這種方法存在一大堆問題。

+1

有查找計算機的方法名稱與IP? – Jimmy 2009-09-18 13:50:49

+0

通過撥打DNS服務器,您可以從其IP獲取計算機名稱 – 2009-09-19 14:17:05

1

試試這個:

string name = Request.UserHostName; 
+0

無法正常工作,返回了網絡服務器的名稱。與System.Net一樣。 – 2016-11-16 21:39:31

-2

這裏是一個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> 
3

代碼:

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) 
相關問題