我需要在C#生成的GeneXus X应用程序中捕获ASP.NET会话Tiemout。当用户离开键盘超过N分钟时,我想再次请求用户名/密码,而不会丢失Web表单中的数据更改
最佳答案
您应该考虑只是延长服务器中的会话超时时间,这样就无需首先解决问题。
如果这不是一个选项,则可以使用户控件通过ajax定期检查会话是否处于活动状态,例如使用JQuery(未测试):
$(function() {
setInterval(CheckSession, 10000); /*10 seconds*/
});
function CheckSession() {
$.get("/CheckSession.aspx", function(data) {
$("body").append("<p>" + data + "<p/>"); /*shows current user*/
if(data = "")
$("#loginform").fadein(200);
});
}
其中CheckSession是main / http proc,其功能类似于
&httprespone.addstring(&websession.get('userid'))
如果不是,请禁用屏幕按钮并以某种方式显示登录表单:
我从来没有尝试过,但似乎有可能。
一种替代方法是将会话检查代码附加到“提交”按钮,在任何javascript框架中都应足够简单。