写了程序,利用WebService访问服务器。
程序引用了两个不同服务器的WebService,分别用于“登陆验证”和“数据下载”。正常的使用流程,是用户先认证登陆,然后再下载数据。排除网络异常情况,调用“登陆”WebService几乎没怎么出现过问题,但是随后的 “数据下载”WebService却经常出问题,就是标题中提到的 “〖997〗-重叠 I/O 操作在进行中”错误。并且这个错误的出现也很有规律:就是在上次程序退出一段时间(大概至少2个小时把,可能与缓存的清除时间有关,我自己的一个模糊的感觉)之后,再重新启动,前几次下载数据都会以这个错误失败,但失败几次之后,就没问题了。我怀疑是前一个“登陆”WebService,影响了后面的的“数据下载”,但是又找不到解决的办法。
下面是我调用WebService的代码:
   BSTR bstrRslt;
   MobileOAWS::CMobileOAWS ws;
   HRESULT hr = -1;
   try
   {
     hr = ws.LogonUser(pThis->m_strUser,pThis->m_strPassword, &bstrRslt);
    }
    catch(...)
    {
    }两个WebService,都是在线程中被调用的。各位大侠,有没有遇到过类似的问题,一般该怎么解决呢?

解决方案 »

  1.   

    我把数据下载WebService发布到本机,调试了一下。发现,客户端调用WebService函数,在具体执行到 
    __atlsoap_hr = SendRequest(_T("SOAPAction: \"http://tempuri.org/Test\"\r\n")); 时失败,但同时,服务端却收到了请求...客户端 GetLastErro(),错误代码是997,也就是重叠的IO错误。“登陆”WebService对数据下载WebService的影响,只是我的一个猜测,因为他们有一个固定的调用顺序,同样是WebService “登陆”从没出现过问题,而下载出现的问题是“重叠”,让我不得不联想到了这方面!