最近在一个WinCE的设备上开发应用,通过GPRS上网调用WebService。服务端用java开发的,使用Axis的实现标准。发现.NET Compact Framework没有实现System.Net.CookieContainer,没法在WinCE的客户端保持会话。
        后来通过分析Web请求响应的Http消息头,了解到Axis的Session是通过Cookie来管理,并通过在Http消息头中加入Cookie:JSESSIONID=XS52V1MBNVOAAQSNDBESKHA 进行传递的。在确定了问题原因之后,解决方案就比较简单了:
        1、调用login成功的时候服务器返回SessionId;
        2、截获HttpWebRequest,加入该消息头。代码如下:
--托管Web服务客户端代理--
 1.NET Compact Framework在调用Axis实现的WebService中如何维持Sessionusing System;
 2.NET Compact Framework在调用Axis实现的WebService中如何维持Sessionusing System.Net;
 3.NET Compact Framework在调用Axis实现的WebService中如何维持Sessionusing MyTest.DataTransfer.WebReference;
 4.NET Compact Framework在调用Axis实现的WebService中如何维持Session
 5.NET Compact Framework在调用Axis实现的WebService中如何维持Sessionnamespace MyTest.DataTransfer
 6}

--调用Web服务--

.NET Compact Framework在调用Axis实现的WebService中如何维持Sessionstring sessionId = MyTest.DataTransfer.TransmitAdapter.Instance.login(userName, password);
.NET Compact Framework在调用Axis实现的WebService中如何维持Session
if (string.IsNullOrEmpty(sessionId))
MyTest.DataTransfer.TransmitAdapter.Instance.checkSession();

参考资源:
Session Management in ASP.NET
Thin Client for Microsoft Visual SourceSafe on Pocket PC / SmartPhones

相关文章:

  • 2021-06-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-10
  • 2021-09-29
  • 2021-07-02
  • 2021-10-26
猜你喜欢
  • 2022-01-31
  • 2021-07-12
  • 2021-12-30
  • 2022-12-23
  • 2021-09-07
  • 2022-12-23
相关资源
相似解决方案