Кажется, вы установили время сеанса равным 5 минутам.
Независимо от того, что вы пытаетесь, тайм-аут сеанса произойдет через 5 минут.
Один из способов, которым вы можете попытаться, - сделать так, чтобы срок действия выдвигался. Таким образом, время вашего сеанса будет перемещено на 5 минут после каждого взаимодействия со страницей.
Но даже в этом случае, если вы открываете несколько вкладок и ничего не делаете на какой-либо из вкладок, срок действия вашего сеанса истекает, поскольку время ожидания сеанса основано на файлах cookie и, как правило, во всех современных браузерах файлы cookie совместно используются на вкладках.
Сессия истекает, если обратная передача не происходит в течение времени ожидания сеанса.
Вы должны быть уверены, что какая-то информация отправляется на сервер, чтобы поддерживать сеанс.
Одним из решений является метаобновление, как объяснено в этом блоге. :
В мастер-файл входят:
<IFRAME ID="KeepAliveFrame" src="KeepSessionAlive.aspx" frameBorder="0" width="0" height="0" runat="server"></IFRAME>
KeepSessionAlive.aspx:
<meta id="MetaRefresh" http-equiv="refresh" content="21600;url=KeepSessionAlive.aspx" runat="server" />
<script language="javascript">
window.status = "<%=WindowStatusText%>";
</script>
KeepSessionAlive.aspx.cs
protected string WindowStatusText = "";
protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
// Refresh this page 60 seconds before session timeout, effectively resetting the session timeout counter.
MetaRefresh.Attributes["content"] = Convert.ToString((Session.Timeout * 60) - 60) + ";url=KeepSessionAlive.aspx?q=" + DateTime.Now.Ticks;
WindowStatusText = "Last refresh " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
}
}