【发布时间】: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