C# 为什么我的课程结束了?

C# 为什么我的课程结束了?,c#,asp.net,session,C#,Asp.net,Session,我有一个使用VS2010运行的ASP.NET web应用程序,它的会话超时配置为20分钟。 我让一个页面运行,每2分钟进行一次ajax调用,并实现了一个。使用此设置,会话永远不会过期;但我发现20分钟后,我的课程仍然在结束 有人知道为什么会这样吗?更重要的是,有谁能告诉我,当用户在该页面时,如何确保会话永不过期 编辑:我更改了除颤器,因此它现在在javascript中执行以下代码: setTimeout(“location.href=”/debrillator.aspx?nocache=“+

我有一个使用VS2010运行的ASP.NET web应用程序,它的会话超时配置为20分钟。
我让一个页面运行,每2分钟进行一次ajax调用,并实现了一个。使用此设置,会话永远不会过期;但我发现20分钟后,我的课程仍然在结束

有人知道为什么会这样吗?更重要的是,有谁能告诉我,当用户在该页面时,如何确保会话永不过期


编辑:我更改了除颤器,因此它现在在javascript中执行以下代码:

setTimeout(“location.href=”/debrillator.aspx?nocache=“+Math.floor(Math.random()*10000000001)+“;”,60000);

还是一样,所以这不是缓存问题。

我直接从VS运行该站点(通过调试“播放”按钮),因此它不应该共享应用程序池,对吗?

您是否验证了javascript正在执行?检查您的访问日志以查看请求是否存在

同时检查您的cookie-我怀疑可能会话cookie没有得到更新,因此您可能需要偶尔重新加载页面以刷新它


更新:从评论中可以看出,浏览器存储的会话cookie似乎没有得到刷新。我建议定期重新加载页面,或者更改会话超时。您必须根据应用程序的使用模式来平衡两者。

您是否验证了javascript正在执行?检查您的访问日志以查看请求是否存在

同时检查您的cookie-我怀疑可能会话cookie没有得到更新,因此您可能需要偶尔重新加载页面以刷新它


更新:从评论中可以看出,浏览器存储的会话cookie似乎没有得到刷新。我建议定期重新加载页面,或者更改会话超时。您必须根据应用程序的使用模式平衡两者。

最后,我不得不使用ajax添加自动保存功能。
这是一个悲伤的日子,StackOverflow无法给我答案:(



编辑:我终于找到了问题的原因……结果是,在母版页的某个地方,代码调用了一个相当模糊的方法,强制执行了一个固定的超时……因此,这不是您可以帮助我的任何事情。对此我深表歉意。

最后,我不得不求助于使用ajax添加自动保存功能。
这是一个悲伤的日子,StackOverflow无法给我答案:(



编辑:我终于找到了问题的原因……结果是,在母版页的某个地方,代码调用了一个相当模糊的方法,强制执行了一个固定的超时时间……因此,这不是您可以帮助我的任何事情。对此我深表歉意。

检查您的应用程序是否与其他网站共享同一个应用程序池应用程序(请参阅IIS管理控制台)可能是因为缓存?请检查您的应用程序是否与其他web应用程序共享同一应用程序池(请参阅IIS管理控制台)这可能是因为缓存的原因吗?我使用Firefox和Firebug,并且每分钟都会在“网络”选项卡上添加一个对或类似的调用。我不确定如何检查会话cookie,但我之所以需要保持此页面的活动性,是因为它是一个大表单,可能需要很长时间才能填充,不应该在其间保存,因此重新加载页面是一个big否。web开发者插件有一种查看cookie的方法,我想还有一些其他插件也可以做同样的事情。好的,我试过了。我在Global.asax中添加了一个日志到Session_End事件,并让它整晚运行。我发现它多次命中该事件,但Session cookie仍然读取相同的值。我需要再次确认无限期保留用户输入的数据,因此无论我做什么,重新加载主页都会失败。不过,除颤器的内部页面会不断地重新加载。更改会话超时只会延迟问题,因为会话结束只是时间问题。我需要的是一种不确定地保持主页活动的方法ely,无需重新加载。如果您需要保留用户输入的数据,我可能会查看一个数据库支持的会话。这样,您就可以在下次加载页面时始终重新加载状态。或者这样做,或者使页面无状态。我使用Firefox和Firebug,并且每分钟都会在“网络”选项卡上添加一个对或类似的调用。我不确定如何操作检查会话cookie,但我需要此页面保持活动状态的原因是,它是一个大表单,可能需要很长时间才能填写,不应该在中间保存,因此重新加载页面是一个很大的禁忌。web developer插件有查看cookie的方法,我想还有一些其他插件可以做同样的事情。好的,我知道我在Global.asax中为Session_End事件添加了一个日志,并让它整夜运行。我发现它多次命中该事件,但会话cookie仍然读取相同的值。同样,我需要无限期地保留用户输入的数据,因此无论我做什么,重新加载主页都是无效的。除颤器的内部页面是consta但是,重新加载时会出错。更改会话超时只会延迟问题的发生,因为会话结束只是时间问题。我需要的是一种使主页无限期保持活动状态的方法,而无需重新加载。如果需要保留用户输入的数据,我可能会查看数据库支持的会话。这样做你可以在下次加载页面时重新加载状态。要么这样,要么使页面无状态。