我建立一個內部網站,將顯示基於計算機名稱不同的列表,因爲不同的計算機都在不同的領域,有沒有辦法(控制器或模型中),以確定客戶端的計算機名稱?確定客戶端的計算機名稱
我已經試過system.environment.machinename但只返回服務器的名稱,任何其他的想法?
我建立一個內部網站,將顯示基於計算機名稱不同的列表,因爲不同的計算機都在不同的領域,有沒有辦法(控制器或模型中),以確定客戶端的計算機名稱?確定客戶端的計算機名稱
我已經試過system.environment.machinename但只返回服務器的名稱,任何其他的想法?
我得到它的工作使用下列內容:從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();
}
我知道檢查客戶端的唯一途徑就是通過Request對象的ServerVariables集合(應該可用於MVC編碼)。
更多信息請參見http://www.4guysfromrolla.com/webtech/092298-3.shtml。 REMOTE_HOST和REMOTE_ADDR看起來像候選人。
我認爲你最好使用這些方法之一來把用戶綁定在一個位置:
記住用戶沒有確保遠程主機名是唯一的方式。由於代理,動態IP等原因,IP出現同樣的問題,但我認爲它會更可靠一些。另外,您可以通過IP地址進行地理定位。
號的客戶端的計算機名稱不是在服務器上的任何方式使用。這是http請求 - 響應的性質。你只能擁有它的IP地址。
一個解決辦法可能是從Flash/Silverlight的(我懷疑的JavaScript)在客戶機上取回機器,放入到餅乾這是可用的每個請求在服務器上。但是這種方法存在一大堆問題。
有查找計算機的方法名稱與IP? – Jimmy 2009-09-18 13:50:49
通過撥打DNS服務器,您可以從其IP獲取計算機名稱 – 2009-09-19 14:17:05
試試這個:
string name = Request.UserHostName;
無法正常工作,返回了網絡服務器的名稱。與System.Net一樣。 – 2016-11-16 21:39:31
這裏是一個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>
代碼:
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)
請注意,如果客戶端位於NAT之後,這不會給您預期的結果,但有可能是因爲您在「Intranet」上,所以這不是問題。 – Niklas 2010-05-14 10:37:49
這是一種魅力。但是爲了獲得IP,我必須做出很小的改變。 string ip = HttpContext.Request.UserHostName.ToString();休息是真棒工作.. +1 – Vinnie 2013-08-16 20:48:46
那麼,它可能只適用於局域網,但它不會在互聯網上工作。 – CodeIt 2017-10-07 15:42:06