【发布时间】:2012-03-11 13:32:57
【问题描述】:
我正在开发一个 ASP.Net Full-Ajax 站点。因为所有操作都由 Ajax 请求完成,所以任何回发请求都不会发送到服务器。另一方面,我有一个 javascript 计时器,它发送一个 ajax 请求来检查会话,如果它过期,则将用户重定向到登录页面。
问题在这里:当用户在页面上工作 20 分钟并且所有操作将在 20 分钟后处理 ajax 请求时,其会话过期并且用户将在使用页面期间重定向到登录页面(通过该 javascript 计时器)。所以我需要用ajax请求刷新它的会话状态。但是如何?如何通过 ajax 请求重置会话状态超时!?!!
取决于我的谷歌搜索结果,我不能通过 ajax 请求执行,因为 SessionId 作为 cookie 存储在客户端中,要更新它需要执行回发请求:(
注意:会话状态设置为InProc 模式,timeout = 20
对不起,我的英语语法不好,我是英语新手
问候,福罗伊
UPDATE:ajax 请求更新会话状态是否超时?!!
更新:当我的用户登录网站时,我设置了这样的会话:
Session["UserId"] = UserObject.Id;
在我的所有页面中,我使用一些网络方法来执行这样的操作:
[WebMethod]
public static Opr1 (Paramethers...)
{
//Question is here , how can i update UserId session to prevent to expire,how can i update it
//execute my codes to preform Opr1
}
【问题讨论】:
-
你描述的方式应该没有问题。 Ajax 请求将发送到服务器。当服务器执行一些代码时(实际上,当它刚刚收到一个请求时),它会将会话滑到另外 20 分钟。
-
我不这么认为,因为我的 ajax 请求不更新会话超时?这里有什么问题?! :(
-
Ajax 请求不需要更新有关会话的任何内容。它只需要到达服务器。它会到达服务器吗?如果可以,请检查断点。
-
是的 - 每个请求都会扩展会话。
标签: asp.net ajax session-state session-timeout