如何使用 ajax 请求重置 ASP.Net 会话状态超时

Ali*_*ghi 5 asp.net ajax session-state session-timeout

我正在开发一个 ASP.Net 全 Ajax 站点。因为所有操作都是通过 Ajax 请求完成的,所以任何回发请求都不会发送到服务器。另一方面,我有一个 javascript 计时器,它发送 ajax 请求来检查会话,如果过期则将用户重定向到登录页面。

问题出在这里:当用户在页面上工作 20 分钟时,所有操作都将在 20 分钟后通过 ajax 请求进行,其会话过期,用户将在使用页面期间重定向到登录页面(通过该 javascript 计时器)。所以我需要用ajax请求刷新它的会话状态。但是如何?我怎样才能通过 ajax 请求重置会话状态超时!?!!

取决于我的 Google 搜索结果,我无法通过 ajax 请求执行,因为 SessionId 作为 cookie 存储在客户端中并更新它需要执行回发请求:(

注意:会话状态设置为InProc模式timeout = 20

抱歉我的英语语法不好,我是英语新手

问候,福罗吉

更新:ajax 请求是否更新会话状态超时?!!

更新:当我的用户登录站点时,我设置了一个如下会话:

Session["UserId"] = UserObject.Id;
Run Code Online (Sandbox Code Playgroud)

在我的所有页面中,我使用一些网络方法来执行如下操作:

[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

}
Run Code Online (Sandbox Code Playgroud)

Sho*_*ikh 4

如果您使用 WebMethods,您应该像这样装饰您的方法

[WebMethod(EnableSession = true)]
Run Code Online (Sandbox Code Playgroud)

此外,如果您需要保持会话处于活动状态,您应该尝试创建一个实现 IRequireSessionState 的 HTTPHandler,此接口允许获取/设置(反序列化/序列化)最终将滑动会话超时的会话变量。

这是一篇关于会话和 ajax 调用的好文章。

http://seejoelprogram.wordpress.com/2008/11/10/maintaining-aspnet-session-state-in-an-ajax-application/

希望这会有所帮助

问候。