我需要在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框架中都应足够简单。

10-05 19:36