1

为什么 NetworkInterface.GetIsNetworkAvailable() 方法总是返回 true,当我在我的 windows phone 7 设备上调试它时?不是模拟器,确定“NetworkInterface.NetworkInterfaceType==NetworkInterface.None”表示设备无法访问网络?如何检测设备是否连接了具有互联网访问权限的网络?我试过这个链接,Zune-Detection-and-Network-Awareness,但是 NetworkInterface.GetIsNetworkAvailable() 方法总是返回 true,这让我很困惑。谢谢你的帮助。

4

1 回答 1

3

阅读该方法的文档。这是MSDN 不得不说的

如果任何网络接口被标记为“up”并且不是环回或隧道接口,则认为网络连接可用。

在许多情况下,设备或计算机未连接到有用的网络但仍被认为可用,并且 GetIsNetworkAvailable将返回true。例如,如果运行应用程序的设备连接到需要代理的无线网络,但未设置代理,则GetIsNetworkAvailable将返回trueGetIsNetworkAvailable何时返回 true的另一个示例是,如果应用程序在连接到集线器或路由器的计算机上运行,​​而该集线器或路由器已失去上游连接。

一般来说,您可以说这种方法通常容易出错。我建议采用失败请求的方法 - 有几个 URL 来测试并检查 HTTP/DNS 解析请求是否通过。如果其中一些通过 - 存在连接。如果全部失败 - 很可能你没有连接。

这是一个示例

于 2012-07-29T03:39:43.947 回答