您的位置:首页 > 其它

.NET Compact Framework在调用Axis实现的WebService中如何维持Session

2006-05-28 13:16 465 查看
最近在一个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服务客户端代理--

1using System;
2using System.Net;
3using MyTest.DataTransfer.WebReference;
4
5namespace MyTest.DataTransfer
6string sessionId = MyTest.DataTransfer.TransmitAdapter.Instance.login(userName, password);
if (string.IsNullOrEmpty(sessionId))
MyTest.DataTransfer.TransmitAdapter.Instance.SessionID = sessionId;
// OK?
bool isAvaiable =MyTest.DataTransfer.TransmitAdapter.Instance.checkSession();

参考资源:
Session Management in ASP.NET
Thin Client for Microsoft Visual SourceSafe on Pocket PC / SmartPhones
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: