获取客户端机器名称和 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 中,浏览器也不传递机器名称。