【问题标题】:Get Client Machine Name and ID - ASP.NET Core 3.1获取客户端机器名称和 ID - ASP.NET Core 3.1
【发布时间】:2020-08-27 08:52:54
【问题描述】:

当客户端使用我的 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。

【问题讨论】:

    标签: asp.net-core httpcontext


    【解决方案1】:

    据我所知,实际上不可能得到客户端机器名,而主机名不是客户端机器名。

    客户端会向服务器发送请求,所以我们只能通过请求获取参数。

    请求包含以下内容:

    请求 IP 地址 (TCP/IP)

    HTTP 标头

    就是这样。 IP 地址是您的 Internet 提供商提供的 IP,主机名是 Internet 流量通过的某些提供商机器的名称。

    一般而言,您无法从请求 IP 获得真实的客户端机器名称。在 HTTP 标头中,浏览器也不传递机器名称。

    【讨论】:

    • 感谢您提供的信息,这确实有道理。您能否再次解释一下您的主机名解释,因为我不太清楚您的意思。我认为我可以检索机器名称的原因是,我注意到 Azure Active Directory 中我的 Windows 机器名称在我的设备下,但不确定这是否是 Windows 的东西,因为它都是 Microsoft。
    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多