重置会话超时而不在ASP.Net中进行回发

有没有办法在不进行回发的情况下重置会话超时?

在这种情况下,我不只是想隐藏用户的回发,我需要在没有回发的情况下重置超时。

在我的页面上,我需要弹出一个对话框,告知用户他的会话超时,如果他想保持活动,他需要点击一个按钮。 现在,当他点击该按钮时,我不想回发页面,因为它会导致数据出现问题。 (没有涉及问题)


根据答案,我修改了代码,但它仍然无法正常工作。 docs.google.com/open?id=0B-Pl5DH2W9MvMDV6SUNiTXR0Z2M

要刷新会话,你需要调用一些东西 – 我建议只显示一个空的gif的简单处理程序。 这是一个简单的代码:

public class JustEmptyGif : IHttpHandler ,IRequiresSessionState { // 1x1 transparent GIF private readonly byte[] GifData = { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02, 0x44, 0x01, 0x00, 0x3b }; public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/gif"; context.Response.Buffer = false; context.Response.OutputStream.Write(GifData, 0, GifData.Length); } public bool IsReusable { get { return false; } } } 

这段代码只是一个处理程序,比如说EmptyImage.ashx ,注意我已经包含了IRequiresSessionState ,它可以调用和更新会话。

现在唯一认为你需要做的是用一些脚本更新隐藏的图像,如:

   

我在最后放置了随机数,以避免将其保留在缓存中并强制它再次重新加载。 这里没有回发,只是一个小的图像加载。

我能想到的唯一方法是对这样的虚拟.net页面进行ajax调用:

 function keepAlive() { var xmlHttp = null; xmlHttp = new XMLHttpRequest(); xmlHttp.open( "GET", "KeepAlive.aspx", false ); xmlHttp.send( null ); } 

然后像这样调用它

  

这里有一些有用的建议: 如何使ASP.NET会话保持活跃 。