我把情况遇到的问题简单介绍一下,希望得到有用的建议:
一. 基本状况
公司部署了两个web service服务,一个部署在公网IP服务器上(以下命名为"公网service"),另一个部署在建立了VPN的服务器上(以下命名为"VPN service"). 网络运营商是中国电信.
这两个服务都通过GPRS由智能手机上的WinForm程序访问服务接口. GPRS运营商是中国移动.
访问公网service时,只需要连接移动CMNET. 访问VPN services时,需要先连接移动CMNET,再连接VPN.
部署web service的服务器平台: IBM WebSphere.
测试所用智能手机状况: WinCE操作系统,移动深度定制机.
WinForm程序开发语言: C#
二. 存在问题
1). 访问公网service时,只要CMNET连接成功,WinForm程序都能正常访问服务端接口.
2). 访问VPN service时,就存在一些问题.连上VPN后,WinForm程序有时能正常访问服务端接口,有时却访问不了. 具体表现是: 提示连接超时,抛出System.Net.Sockets.SocketException异常,观察服务端日志,HTTP请求根本没有到达VPN 服务端,但这时用手机上内置的IE浏览器访问VPN 服务接口,却能正确返回接口函数列表,Ping VPN 服务端也能Ping得通,而且在服务端也有相应的日志.
最后,用数据线把手机和PC机连接起来,断开PC机网线,把手机作为调制解调器,连接上VPN.然后在PC机上启动一个Windows Mobile 6.0的模拟器,把WinForm程序拷贝到模拟器运行,却能每次都能正常访问到VPN 服务端.
我的疑问是: (1) 如果说访问不了VPN服务端接口是WinForm程序有问题,那为什么访问公网service的时候就都正常呢? 而且把手机当调制解调器时在PC机的模拟器上跑也是访问正常的. (2) 如果说是VPN信号不稳定的问题,那为什么通过手机上内置的IE浏览器却能访问VPN 服务接口呢?而且ping也ping得通 (3) 如果说是手机的问题,那为什么它有时候却能正常访问得到呢?
期待大家指点一下.
------解决方案--------------------
感觉没道理?应该是程序选择连接的问题,如果连接不上的时候,你查看下当前你的webservice使用的socket连接是哪个。我感觉是你的form在连接不上的时候应该是使用的连接不对
------解决方案--------------------
从楼主分析的现象分析,服务器应该没有任何问题。
既然通过IE访问也没问题,那估计就是在WinForm中调用VPN Service的问题了。
------解决方案--------------------
这里明显可以看出是winform的问题,因为vpn里的传输是要经过加密或者加头的。iE等浏览器应该可以很好支持vpn但是winform就难说了。
------解决方案--------------------
我的开发跟楼主的环境差不多:
移动定制手机(wince)+WebService
建议楼主从以下几个方面考虑:
1、cmwap和cmnet 两种方法接入调试
2、是否双卡?3G信号?Edge网络?2G网络?(用时个手机会在几种网络下自动选择导致信号不稳定)
3、一部分移动定制的wince手机有cmwap和cmnet限制,不知道楼主用的是哪一机器
4、用PC通过手机去ping服务器,看丢包率,多测试几次
5、根据经验,VPN是要调试的,也可能设置过滤了,建议跟VPN技术协商多沟通,多调试。
------解决方案--------------------
这个问题很深刻,这种问题没有官方帮忙通常不好解决,估计是开发工具这头有什么bug,向MS技术支持中心求助吧,哈哈。
------解决方案--------------------
我也遇到同样问题了,经过分析,原因初步限定在两个方面:
1、MTU的值大于GPRS的默认值.
http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/b0f90f2c-cb07-455d-a740-f34bb66a3912
这个基本上排除了.
2、VPN的空加密数据包.
http://blogs.msdn.com/andrewarnottms/archive/2007/11/19/why-net-compact-framework-fails-to-call-some-https-web-servers.aspx
这个暂时还没有条件完全验证.
已经试验过.netcf 3.5的所谓补丁了,没能解决.
不知道是不是VPN过滤的问题,按理WinCE并没有直接建立SSL链路,应该不会有这问题的.
痛苦啊,看来还是得找移动的咨询下是不是需要身份验证.
------解决方案--------------------
明显符合VPN故障的特征,有两个原因:
1,VPN连接没建好。比如连接上pptp端口1723并不代表连接OK了,还需要两机器间IP 47号协议(GRE)的畅通,数据都是通过这个协议传输的。
2,VPN连接是正常的,但是本地路由表有问题。因为本地存在了多个网络连接,必须有张路由表,以确定当前请求到底走那个网络连接。
VPN连接后,在IE上用局域网IP,访问WebServer,能通,才能说明VPN是OK的
如果公网IP可以,局域网IP不行,基本上是路由表不对,在手机上执行“route print”瞧瞧就知道了
另外普及下VPN原理
VPN是虚拟的一个网络连接,这个网络连接与通常的WIFI连接、GPRS连接一样。用户进行网络通讯是不需要理公VPN连接的任何技术细节的,只不过它的连接建立和数据传输依赖于一个已有的其它网络连接
VPN连接建立OK后,VPN客户端充当了自己的网关的角色