C# SoapHttpClientProtocol在WM 6.5上使用.NET CF 3.5成功发送消息后仍引发ConnectFailure

C# SoapHttpClientProtocol在WM 6.5上使用.NET CF 3.5成功发送消息后仍引发ConnectFailure,c#,soap,windows-mobile-6.5,.net-cf-3.5,soaphttpclientprotocol,C#,Soap,Windows Mobile 6.5,.net Cf 3.5,Soaphttpclientprotocol,这是一个棘手的问题 这是一个运行.net Compact Framework 3.5.9085.00的Windows Mobile 6.5设备,通过自动生成的SOAP代理(System.net.SoapHttpClientProtocol(C#)的子类)进行简单的自动生成web服务调用 对doInvoke()的调用几乎立即引发System.Net.WebException,因为它没有连接到网络。通常这表示某种web代理或连接错误,但是当我将一个简单的日志服务器粘贴到web服务地址时,我可以看到收

这是一个棘手的问题

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

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

同样的代码在同一型号的另一台设备上完全可以正常工作。当我使用simple logging server时,我可以看到另一台设备的相同帖子,但这篇帖子最终引发System.Net.WebException:操作已超时(它会超时,因为它不会得到响应)

我很困惑。毫无疑问,造成问题的原因是两者之间的配置差异,但我不知道是什么

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

有人照了这个吗

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. 

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

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

HKLM\ControlPanel\WiFi\Ethernet
内含价值

"DestId"="{436EF144-B4FB-4863-A041-8F905A62C572}"
(这是Internet的GUID)

如果注册表项不存在,“Work”似乎是默认设置

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


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

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

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

HKLM\ControlPanel\WiFi\Ethernet
内含价值

"DestId"="{436EF144-B4FB-4863-A041-8F905A62C572}"
(这是Internet的GUID)

如果注册表项不存在,“Work”似乎是默认设置

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

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