为什么NetworkInterface.GetIsNetworkAvailable()方法总是返回true,当我在我的Windows Phone 7设备上调试它?不是模拟器时,是否确定“NetworkInterface.NetworkInterfaceType == NetworkInterface.None”表示设备无法获取网络访问?如何检测设备是否连接了具有intenert访问权限的网络?我试过这个链接Zune-Detection-and-Network-Awareness,但是NetworkInterface.GetIsNetworkAvailable()方法总是返回true,这让我很失望。谢谢你的帮助。
答案 0 :(得分:3)
阅读该方法的文档。这是MSDN has to say:
如果有任何网络,则认为网络连接可用 interface标记为“up”,不是环回或隧道接口。
在许多情况下,设备或计算机未连接 一个有用的网络,但仍然被认为是可用的 GetIsNetworkAvailable 将返回 true 。例如,如果设备 运行应用程序连接到无线网络 需要代理,但未设置代理, GetIsNetworkAvailable 将 返回 true 。 GetIsNetworkAvailable 的另一个示例将返回 true 是指应用程序是否在已连接的计算机上运行 到集线器或路由器丢失上游的集线器或路由器 连接。
通常,您可以说此方法通常容易出错。我建议采用失败请求的方法 - 有几个URL来测试并检查HTTP / DNS解析请求是否通过。如果其中一些通过 - 有一个连接。如果一切都失败了 - 很有可能你没有联系。