【问题标题】:Get the DNS Suffix Search List in a Metro app在 Metro 应用程序中获取 DNS 后缀搜索列表
【发布时间】:2012-11-30 00:42:51
【问题描述】:

Metro 应用程序的一个限制是它们无法连接到 localhost。我们正在创建一个应用程序,它允许用户通过输入 IP 或主机名连接到服务器,我们的一些用户可能会想使用 localhost(他们连接的我们的其他软件可能与x86 机器的桌面应用程序)。如果您尝试连接到 localhost,您会收到一个一般连接错误,就好像它无法访问一样,但这是一个谎言,操作系统告诉应用程序阻止它做不应该做的事情。

我们希望针对这种情况提供更好的错误消息。为此,我试图将用户输入的内容与本地机器的各种名称进行比较,我们通过 NetworkInformation.GetHostNames() 获得这些名称。这在某些情况下可以正常工作,但并非在所有情况下都有效。考虑这种情况:用户的机器名为“foo”,其完全限定名称是“foo.bar.com”,网络搜索路径(ipconfig 输出中的“DNS 后缀搜索路径”)是“bar.com”。用户输入“foo.bar.com”。当我们浏览主机名列表时,我们得到“foo”,而不是“foo.bar.com”。因此测试无法捕捉到这种情况,用户得到的是一般错误而不是我们的自定义错误。

我正在寻找一种方法来以编程方式确定搜索域列表是什么,以便我可以将这些变体添加到列表中进行比较。但是,我在 WinRT(使用 C#)中找不到提供该信息的 API。

【问题讨论】:

    标签: c# windows-8 microsoft-metro


    【解决方案1】:

    你是在加入域的机器上测试这个吗?如果它是加入域的机器,GetHostNames() 应该返回具有本地机器完全限定 DNS 的“DomainName”类型之一。因此,如果机器加入了“bar.com”的域,您应该看到“foo.bar.com”列为“DomainName”类型之一。另一个“域名”类型是 foo.local。

    【讨论】:

    • 好问题。不,这台机器不在域中。我已经拥有的代码适用于属于域的机器,但不适用于不属于域的机器。如果一台非域机器名为“foo”,那么我们的 DNS 服务器显然仍将“foo.domain.suffix.com”解析为指向该机器,但该机器的网络设置只会将其名称显示为“foo”。但网络设置也有一个包含“domain.suffix.com”的 DNS 搜索列表。这可能只是我们的 DNS 配置的问题,但我担心客户也可能会遇到这种情况。
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多