HttpWebRequest在真实设备上抛出ConnectFailure,但在Windows Handheld 6.5

时间:2016-10-03 07:30:29

标签: windows-mobile-6.5 internet-connection .net-cf-3.5 webexception intermec

我在此链接中遇到类似问题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类的Native代码,发现ConnMgrMapURL无法将URL映射到任何网络Dest Guid,它总是返回00000000-0000-0000-0000-000000000000。进一步调试显示,ConnectFailure异常发生的错误在mscoree.dll中的EstablishConnectionForURL方法中。不幸的是,由于设备的限制,我无法调试此文件。

我也尝试过OpenNETCF ConnectionManager类来进行连接。状态是连接的,但是查看这个类的代码,OpenNETCF的人们正在将硬编码Internet Guid id添加到方法中。但是HttpWebRequest仍未得到响应。

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

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

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

我尝试过的任何事情都没有。但内置的浏览器和Intermec HTML5浏览器(第三方应用程序)可以连接到互联网和本地地址。

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

2 个答案:

答案 0 :(得分:0)

如果"我尝试过的任何事情都没有。但内置浏览和Intermec HTML5浏览器(第三方应用程序)可以连接到互联网和本地地址。" httpwebrequest不会触发连接管理器连接到正确的网络类型。有一个'工作'和#'互联网'连接。您使用什么网址进行网络广告请求?它可能指向一项工作'类型地址,使用非点缀方案的地址。

尝试设置要在“工作”设置的设备上的连接。设置'工作'连接是一个也连接到互联网'没有代理。然后设置WiFi适配器以连接到工作'也是(请参阅设置>连接> WiFi,"网卡连接到:=工作")。

允许在ActiveSync或Windows Mobile Device Manager中为实际设备设置DMA是没有意义的。这仅适用于模拟器。但是'允许数据连接"在WMDC中必须或硬件设备在连接到ActiveSync时将关闭WiFi连接。

答案 1 :(得分:0)

感谢Josef的帮助。我尝试了设置连接和放大器的所有功能。用于编辑注册表和使用MS Network Analyzer等工具的网卡。

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

正如我所提到的,对于我测试的任何类型的URL,ConnMgr.ConnMgrMapURL总是返回0000-0000000-00000。这个问题让我发现了Windows Mobile提供的CM_Mappings服务提供商和配置系统Microsoft CM Mappings Definition

我按照此链接Device Provisioning Tutorial首先使用RapidConfig工具从设备查询当前的CM_Mappings,结果是......没有任何内容。模拟器已经和我试图从模拟器中删除所有条目,结果是模拟器与具有ConnectFailure消息的设备相同。

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

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

我希望这可以帮助那些有同样问题的人。