会话超时后如何修复重定向页面

时间:2019-02-12 06:05:50

标签: c# asp.net

我正在使用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秒钟后不再弹出任何消息。

1 个答案:

答案 0 :(得分:0)

尝试以下操作:window.location.replace("Login.aspx");window.location.href = 'Login.aspx'; 两者都会重定向您的登录页面。但是:

location.replace =不会将当前页面添加到历史记录中。因此,在导航后退按钮时将无法返回。

location.href =这会将当前页面添加到历史记录中。然后,用户可以单击“后退”按钮返回到该页面。

我想在您的情况下使用location.replace更合理。