【问题标题】:C# - Dns.GetHostEntry(uri.Host) in .net core?C# - .net 核心中的 Dns.GetHostEntry(uri.Host)?
【发布时间】:2018-01-31 16:57:44
【问题描述】:

我可以使用 Dns.GetHostEntry("google.com") 获取 uri 的 IP 地址,例如“google.com”,例如:

        var ip = Dns.GetHostEntry("google.com");
        Console.WriteLine(ip.AddressList.FirstOrDefault().ToString());
        Console.ReadKey();

此代码在 .net 框架中运行良好,但我有一个跨平台项目,需要在 .net core 1.1 和 .net standard 1.6 中使用此代码,但 .net core 和标准版本不支持 System.Net.Dns。获取主机条目, 如何使用 .net 核心和标准中的 Dns 从主机名中获取服务器 IP 地址?

【问题讨论】:

    标签: c# dns .net-core


    【解决方案1】:

    再次检查后,我在 .net 标准和 .net 核心中发现了 Dns.GetHostEntryAsync,我将代码更改为此以支持 .net4 和 .net45 以及 .net 核心和 .net 标准:

    #if (NETSTANDARD1_6 || NETCOREAPP1_1)
                IPHostEntry Host = await Dns.GetHostEntryAsync(uri.Host);
    #else
                IPHostEntry Host = Dns.GetHostEntry(uri.Host);
    #endif
    

    【讨论】:

    • 为什么是NETSTANDARD1_6 || NETCOREAPP1_1?而不仅仅是NETSTANDARD1_6?如果这是一个库,你只需要针对 netstandard,而不是 netcoreapp(或者我有兴趣知道为什么)
    • 因为如果我将来在我的项目中使用 Microsoft.NETCore.CoreCLR 包,.net 标准不支持该库,而我在我的项目中同时使用 .net 核心和 .net 标准,那只是为了后者
    猜你喜欢
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2017-08-05
    • 1970-01-01
    • 2019-11-15
    • 2016-07-23
    相关资源
    最近更新 更多