1

这是一个棘手的问题。

这是一个运行 .net Compact Framework 3.5.9085.00 的 Windows Mobile 6.5 设备,通过自动生成的 SOAP 代理(System.Net.SoapHttpClientProtocol (C#) 的子类)进行简单的自动生成的 Web 服务调用

对 doInvoke() 的调用几乎会立即引发 System.Net.WebException,因为它没有连接到网络。通常这表明某种网络代理或连接错误,但是当我在网络服务地址上放置一个简单的日志服务器时,我可以看到接收到的 POST 响亮而清晰,因此它显然可以连接到网络。

相同的代码在同一型号的另一台设备上运行良好。当我使用简单的日志记录服务器时,我可以看到与另一台设备相同的 POST,但这个最终会抛出 System.Net.WebException: The operation has timed-out 相反(它会,因为它不会得到一个答复)。

我很困惑。毫无疑问,导致问题的两者之间存在一些配置差异,但我不知道是什么。

就好像第一个设备已经建立了一个到服务器的只写连接,当它试图读取响应时它会掉下来,但我以前从未听说过这种情况。

有人对这个有任何启发吗?

System.Net.WebException: Could not establish connection to network.
       at System.Net.HttpWebRequest.finishGetResponse()
       at System.Net.HttpWebRequest.GetResponse()
       at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
       at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
       at System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke(String methodName, Object[] parameters, WebClientAsyncResult asyncResult)
       ...

    Exception Status: ConnectFailure
    Exception Message: Could not establish connection to network.
    No Inner exception. 
4

1 回答 1

0

事实证明,这种奇怪的行为是由于设备的 WiFi 网络适配器设置为“工作”而不是“互联网”。

这可以通过控制面板进行设置,或者通过添加注册表项

HKLM\ControlPanel\WiFi\Ethernet

包含值

"DestId"="{436EF144-B4FB-4863-A041-8F905A62C572}"

(这是 Internet 的 GUID)。

如果此注册表项不存在,“工作”似乎是您获得的默认值。

设置此值后,连接工作正常。

为什么连接可以在“工作”模式下发送但不能接收(而不是说什么都不做)仍然是一个谜,但这就是它的解决方法。

于 2015-06-05T17:25:41.187 回答