对象持久化的问题

superzxf 2009-08-05 11:01:25
做了一个webservice服务,主要功能是客户端调用一个方法进行连接登记,服务器生成一些信息并记录在一个集合中,直到客户端调用注销方法才销毁,集合对象定义为private static的静态字段
现在碰到的问题是自己电脑上(xp)测试都没有问题,而在客户电脑上(server 2003)发现如果客户端不进行任何操作,一段时间后(一个小时左右)再进行操作就会出错,错误信息为集合中不存在指定的关键字,也就是集合中的内容丢失
起先以为是会话超时的设置问题(默认为20分钟),把这个时间设长也不能解决,而在自己电脑上即使把超时设为1分钟,客户端不进行任何操作一个小时都没有问题
是什么原因会造成对象的重新初始化?是否一定要用cache才能解决?
...全文
96 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
XGJ889 2009-08-26
  • 打赏
  • 举报
回复
提交到服务器后,直接更新到数据库,更简单,更安全
而且,如果服务器端有什么问题,这些ArrayList中的
数据就会丢失
guyehanxinlei 2009-08-26
  • 打赏
  • 举报
回复
放到session中会有时效问题,放在数据库中不会有这个问题。
youdandan 2009-08-26
  • 打赏
  • 举报
回复
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉☆☆☆☆☆☆☆☆﹉
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉☆﹉
﹉﹉﹉﹉☆☆☆☆☆☆☆﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉☆﹉﹉
☆☆☆☆☆﹉﹉﹉﹉﹉﹉﹉﹉﹉☆﹉☆﹉﹉﹉﹉﹉☆﹉﹉
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉﹉☆﹉﹉﹉☆﹉﹉﹉☆﹉﹉﹉
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉☆﹉﹉☆﹉﹉﹉﹉
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉☆☆﹉﹉﹉﹉﹉
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉﹉☆﹉﹉﹉﹉﹉﹉
﹉﹉﹉﹉☆﹉﹉﹉﹉﹉☆﹉﹉﹉﹉﹉☆☆﹉﹉﹉﹉﹉﹉﹉
﹉﹉﹉﹉﹉☆☆☆☆☆☆﹉﹉☆☆☆﹉﹉﹉﹉﹉﹉﹉﹉﹉
﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉﹉
youdandan 2009-08-25
  • 打赏
  • 举报
回复
頂,學習
zhongjiekangping 2009-08-21
  • 打赏
  • 举报
回复
应该不是session 的问题
  • 打赏
  • 举报
回复
你这样会有很多问题:
1.private static静态对象当AppDomain销毁时,静态对象才被清除,而且不容易跨进程。你的错误应该不是会话超时造成的,而是服务端进程被回收了。
2.使用所有访问者都会共享一份静态主本,这样做符合你的业务要求吗?
  • 打赏
  • 举报
回复
静态字段只能在appdomain卸载时销毁,你看看你服务器上进程正常吗
宝_爸 2009-08-06
  • 打赏
  • 举报
回复
如果一段时间没有request, IIS会结束掉host asp.net的进程.进程结束后,所有的内存都被清空了。
估计是这个原因。

建议使用数据库记录。
宝_爸 2009-08-06
  • 打赏
  • 举报
回复
服务器的集合中如何identify客户的?
服务器是如何记录的?
novacolas 2009-08-06
  • 打赏
  • 举报
回复
放到数据库中试试
superzxf 2009-08-06
  • 打赏
  • 举报
回复
集合中的内容其中一部分就是数据库的相关信息,比如记录每个客户端正在连接的数据库(数据库不是一个),很多信息是没法放到数据库中的
如果放到cache中能否彻底解决这个问题?
superzxf 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 findcaiyzh 的回复:]
如果一段时间没有request, IIS会结束掉host asp.net的进程.进程结束后,所有的内存都被清空了。
估计是这个原因。

建议使用数据库记录。
[/Quote]

如果是这个原因,那么这个时间应该可以设置吧,但会话超时之类的参数都不影响这个时间,究竟是哪个参数呢?
wdzr_826 2009-08-06
  • 打赏
  • 举报
回复
同楼上几位,以你的需求,还是放到DB里比较合适。

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧