1

我遇到与此链接类似的问题No Internet on the device via code

我正在研究在 Windows Handheld Embedded 6.5 上运行的 Intermec iRoc Ci70 设备。此设备具有 802.11abgn 无线 LAN 适配器。

在运行 Windows Mobile 6.5.3 的设备模拟器上,HttpWebRequests 运行良好,但不在设备上。我总是在设备上收到带有 ConnectFailure 状态代码的 WebException。

我尝试进一步调试 ConnMgr 类的本机代码,发现 ConnMgrMapURL 无法将 URL 映射到任何网络 Dest Guid,它总是返回 00000000-0000-0000-0000-000000000000。进一步调试表明,发生 ConnectFailure 异常的错误是在 mscoree.dll 中的方法建立连接ForURL 中。不幸的是,由于设备的限制,我无法调试此文件。

我还尝试了 OpenNETCF ConnectionManager 类来进行连接。状态是已连接,但查看此类的代码,OpenNETCF 的家伙正在将 Internet Guid id 硬编码到方法中。但是 HttpWebRequest 仍然没有得到响应。

我还关闭了所有证券,并在设备上安装了 SDK 开发证书。

我还尝试让设备通过 ActiveSync 使用 DMA 连接到互联网并关闭 WiFi 作为另一个测试。

我还尝试针对 .NET-CF 版本 1、2、3.5 (3.5.9xxx) 和 3.5 (3.5.7xxx)

我尝试过的所有东西都不起作用。但内置浏览器和 Intermec HTML5 浏览器(第三方应用程序)可以连接到互联网和本地地址。

不幸的是,我没有其他设备可以比较。请帮助我。

4

2 回答 2

0

如果“我尝试过的所有方法都不起作用。但是内置浏览器和 Intermec HTML5 浏览器(第三方应用程序)可以连接到互联网和本地地址。” httpwebrequest 不会触发连接管理器连接到正确的网络类型。有“工作”和“互联网”连接。您使用什么 URL 进行网络请求?它可能指向一个“工作”类型的地址,一个使用非点式方案的地址。

尝试将设备上的连接设置为“工作”,并将“工作”连接设置为也连接到“Internet”且没有代理的连接。然后将 WiFi 适配器也设置为连接到“工作”(请参阅​​设置>连接>WiFi,“网卡连接到:=工作”)。

在 ActiveSync 或 Windows Mobile 设备管理器中设置为允许对真实设备进行 DMA 是没有意义的。这仅适用于模拟器。但是 WMDC 中的“允许数据连接”是必须的,否则硬件设备在连接到 ActiveSync 时会关闭 WiFi 连接。

于 2016-10-04T04:01:55.707 回答
0

感谢约瑟夫的帮助。我尝试了从设置连接和网卡到编辑注册表和使用 MS Network Analyzer 等工具的所有方法。

它仍然给出了相同的结果。事实证明,ConnMgr 的本地方法确实给了我线索和解决方案:-)。

正如我提到的,对于我测试的任何类型的 URL,ConnMgr.ConnMgrMapURL 总是返回 0000-0000000-00000。这个问题使我找到了有关 CM_Mappings 服务提供者和 Windows Mobile 提供的供应系统的信息Microsoft CM Mappings Definition

我按照这个链接设备配置教程首先使用 RapidConfig 工具从设备中查询当前的 CM_Mappings,结果是......那里什么也没有。模拟器有,我试图从模拟器中删除所有条目,结果是模拟器与带有消息 ConnectFailure 的设备相同。

所以我使用了在上述链接中找到的默认值,并将它们推回设备,瞧!!!。它工作正常,所有类型的 URL 都正确路由到 MetaNetworks,HttpWebRequest 确实给出了响应代码 200。

这是一次地狱般的冒险。我不知道为什么我的设备会删除这些映射,并且对于 MS 如何实现它们的错误处理非常令人沮丧。发生这些错误时未找到有用的信息。我花了将近一周的时间才缩小根本原因。

我希望这会帮助有同样问题的人。

于 2016-10-05T07:06:57.780 回答