当前位置: 代码迷 >> Web Service >> 关于web service中Session的老有关问题
  详细解决方案

关于web service中Session的老有关问题

热度:210   发布时间:2016-05-02 02:53:29.0
十万火急 关于web service中Session的老问题
开发一个web service给java程序调用,由于其他原因,web service要使用Session对象来保存信息,问题来了,Session并没有保存值,每次执行都为空。

问:如何在web service中实现session能够保持值,如果是ASP.NET 调用,使用System.Net.CookieContainer 可以解决,问题是提供给java调用的,所以只能在 web service 内部实现,如何解决。。。???

------解决方案--------------------
java 自己不做保存的话,无法保证两次提交都是同一个session id。就算服务端可以持久化session信息也没办法。
------解决方案--------------------
可以用一个静态的对象如
private static Dictionary<string, SessionList> ClientSession = new Dictionary<string, SessionList>();
SessionList 是你的的Session对象,要求可序列化
string 是你的客户端帐号

需要时往ClientSession 里增加,用完时删除

------解决方案--------------------
这么说吧,就像你自己说的当asp.net 调用 webservice 的时候用 CookieContainer 可以保持 webservice 的session。

同理的java 调用的时候,它自己就得找一个类似的能保持 cookie 的容器。

而作为服务端,只要服务不停止那么这个 Session 就会一直保持着。当然是有 Timeout 时间的。
(这是因为webservice使用了asp.net兼容。)


所以注意:作为客户端的java一定要自己保持cookie

这就好像你做地铁买一日票,有这个票当日随便乘坐。自己把票弄丢了就甭想进咯。

java 调用 webservice 并保持cookie 可以参考下面:

http://stackoverflow.com/questions/6751054/consuming-web-service-storing-cookies


  相关解决方案