当客户端使用我的SSO Web .net核心应用程序时,我需要获取客户端的计算机名称和ID。
我的第一个解决方案是使用机器名称:
var machName = Environment.MachineName;
这是机器ID:
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
// consider ethernet interfaces
if(nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet && nic.OperationalStatus == OperationalStatus.Up)
{
return Ok(nic.GetPhysicalAddress().ToString());
}
}
然后我突然意识到,它们是从服务器中获取名称和ID的,就像在我的计算机中一样。
我目前正在调试request
信息,包括header
信息,但是在header
中看不到任何与名称和ID相关的信息。我可以从HttpContext
获取请求IP和用户代理,这是我需要的,但不是名称和ID。
答案 0 :(得分:1)
据我所知,实际上不可能获得客户端计算机名称,而主机名不是客户端计算机名称。
客户端会将请求发送到服务器,因此我们只能通过请求获取参数。
该请求包含以下内容:
请求IP地址(TCP / IP)
HTTP标头
仅此而已。 IP地址是您的Internet提供商提供的IP,主机名是Internet流量通过的某些提供商计算机的名称。
通常无法从请求IP获得真实的客户端计算机名称。在HTTP标头中,浏览器也不传递计算机名称。