3

我需要在用 C# 生成的GeneXus X应用程序中捕获 ASP.NET Session Tiemout 。当用户离开键盘超过 N 分钟时,我想再次请求用户/密码,而不会丢失网络表单中的数据更改

4

1 回答 1

3

您应该考虑只延长服务器中的会话超时,这样您就不需要首先解决问题。

如果这不是一个选项,您可以创建一个用户控件,定期检查会话是否通过 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 框架中都应该足够简单。

于 2010-12-02T14:08:30.017 回答