获取客户端机器名称和 ID - ASP.NET Core 3.1
Get Client Machine Name and ID - ASP.NET Core 3.1
当客户端使用我的 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。
据我所知,实际上不可能得到客户端机器名,主机名不是客户端机器名。
客户端会向服务器发送请求,所以我们只能通过请求获取参数。
请求包含以下内容:
Request IP address (TCP/IP)
HTTP headers
就是这样。 IP 地址是由您的 Internet 提供商提供的 IP,主机名是 Internet 流量经过的某些提供商机器的名称。
一般情况下,您无法从请求 IP 获取真实的客户端计算机名称。在 HTTP headers 中,浏览器也不传递机器名称。
当客户端使用我的 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。
据我所知,实际上不可能得到客户端机器名,主机名不是客户端机器名。
客户端会向服务器发送请求,所以我们只能通过请求获取参数。
请求包含以下内容:
Request IP address (TCP/IP)
HTTP headers
就是这样。 IP 地址是由您的 Internet 提供商提供的 IP,主机名是 Internet 流量经过的某些提供商机器的名称。
一般情况下,您无法从请求 IP 获取真实的客户端计算机名称。在 HTTP headers 中,浏览器也不传递机器名称。