我正在使用ASP.NET C#创建一个示例网站,并在闲置时使用会话超时,我使用JavaScript进行会话超时,我的JavaScript代码正在运行,我将会话超时设置为10秒以进行测试,测试10秒钟,它将重定向到“登录”页面,而我的MasterLayout未被重置,再过10秒钟,它将再次显示一条消息,表明您的会话已结束。
我试图在web.config中设置会话超时:
<configuration>
<system.web>
<sessionState timeout="2"></sessionState>
</system.web>
</configuration>
和身份验证:
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="1" />
</authentication>
</system.web>
</configuration>
会话过期后,重定向页面将无法正常工作。
这是我的JavaScript代码:
window.setTimeout("endSession();", 10000);
function endSession()
{
alert("Your session has expired. You will be redirected to the login page.");
window.location("Login.aspx");
}
10秒后,它将重定向到登录页面,但MasterLayout未被重置,并且10秒后,它将再次显示消息。
我希望输出在10秒钟后会重定向到登录页面,并且主布局从一开始就是新鲜的,就像第一次运行网站一样,在10秒钟后不再弹出任何消息。
答案 0 :(得分:0)
尝试以下操作:window.location.replace("Login.aspx");
或window.location.href = 'Login.aspx';
两者都会重定向您的登录页面。但是:
location.replace
=不会将当前页面添加到历史记录中。因此,在导航后退按钮时将无法返回。
location.href
=这会将当前页面添加到历史记录中。然后,用户可以单击“后退”按钮返回到该页面。
我想在您的情况下使用location.replace
更合理。