0

我有一个代码,为会话过期弹出消息,如下所示。但是,此代码无法进行正确的计数会话。当运行程序时,它会直接弹出没有按照我设置的时间的会话过期消息。我知道为什么我的消息会这么早弹出,因为在我的

Page.ClientScript.RegisterStartupScript(cstype, csname, strconfirm, false);

我没有添加“超时”,所以它没有按我的意愿执行,但是如何添加呢?当我尝试添加它时,它将导致输入格式错误。有人可以帮我解决这个问题吗?

string csname = "timeoutWarning";
Type cstype = this.GetType();
if (!Page.ClientScript.IsStartupScriptRegistered(cstype, csname))
{
    var timeout = HttpContext.Current.Session.Timeout * 60 * 1000;
    string strconfirm = "<script>if(!window.confirm('Your login session is about to expire. Do you want to extend it?')){window.location.href='../login.aspx'}</script>";
    Page.ClientScript.RegisterStartupScript(cstype, csname, strconfirm, false);
}
4

1 回答 1

0

你没有设置超时的地方! 提取您的 java 脚本代码以运行 saySessionTimeOutHandler()并在会话到期时调用它:

 string strconfirm = "<script>" + 
                     "window.setTimeout('SessionTimeOutHandler()', 60000);" + 
"function SessionTimeOutHandler() { "+
"    if(!window.confirm('Your login session is about to expire. Do you want to extend it?'))"
+"   {window.location.href='../login.aspx'}</script>"; }";

现在,只需替换您的 strconfirm 初始化语句。它应该适合你!

于 2012-08-03T04:54:19.543 回答