用Ajax保持会话?

czwdmj 2007-07-17 05:38:52
在一个项目中,需要让会话变量存在于页面关闭之前的整个周期内,尝试用asp.net ajax的方式来实现,代码如下所示:
  .aspx页面中,<body>标签:<body onload="KeepActive();">
  客户端JS代码:
  function KeepActive(){
  PageMethods.KeepSession();
  setTimeout("KeepActive();",20000);
  }
  后台.cs代码:
  [System.Web.Services.WebMethod]
 public static void KeepSession()
 {
 }

  web.config文件中的会话设置:<sessionState regenerateExpiredSessionId="true" timeout="1"/>

  代码的意图就是,让客户端定期调用服务端方法,从而保持会话状态不受会话超时时间的限制。而实际的运行效果是,大部份时间能保持会话,但仍然有些时候会丢失会话。
  希望能引起同道朋友们的一些探讨,提供一些看法。望不吝赐教!

...全文
255 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gimse7en 2007-09-20
  • 打赏
  • 举报
回复
微软不是推荐stateServer吗
Jinglecat 2007-07-17
  • 打赏
  • 举报
回复
本身 Session 就会因为,服务器不稳定或者其他意外原因丢失的,

那就只有尽量解决找这个意外原因了,

比如选择存在 数据库 的 Session
Jinglecat 2007-07-17
  • 打赏
  • 举报
回复
sorry,

是 20s,

晕了.....
Jinglecat 2007-07-17
  • 打赏
  • 举报
回复
setTimeout("KeepActive();",20000); // 20 分钟才请求一次
timeout="1" // 1 分钟就过期了,

我开始怀疑,LZ 的“ 大部份时间能保持会话”

其实,既然,你用了 AJAX 异步刷新,大可 5 ~ 10 分钟刷新一次,甚至可以再短一些

而 Session 应该设为你预期比较合理的,比如默认的 20 分钟
honey52570 2007-07-17
  • 打赏
  • 举报
回复
还不如直接用 cookie方便啊
honey52570 2007-07-17
  • 打赏
  • 举报
回复
就是保持session不过期

有时候服务器一不稳定,session就没了

这样保持会话,很费服务器资源

觉得没必要

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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