如何避免web.config中的会话超时

时间:2011-03-18 15:54:21

标签: c# asp.net

我应该在asp.net的web配置文件中写什么,以便延长会话时间。请告诉我应该将代码放在web配置中的确切位置

6 个答案:

答案 0 :(得分:12)

如果您试图阻止会话一直超时,则可以执行此操作而不是增加会话超时。

KeepAlive.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="KeepAlive.aspx.cs" Inherits="Pages.KeepAlive" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ OutputCache Location="None" VaryByParam="None" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    KEEP ALIVE
    </div>
    </form>
</body>
</html>

保持Alive.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Pages
{
    /// <summary>
    /// Page to keep the session alive
    /// </summary>
    public partial class KeepAlive : System.Web.UI.Page
    {
        //- EVENTS ------------------------------------------------------------------------------------------------------------------

        #region Events

        /// <summary>
        /// Page Load
        /// </summary>
        /// <param name="sender">object</param>
        /// <param name="e">args</param>
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                //Add refresh header to refresh the page 60 seconds before session timeout
                Response.AddHeader("Refresh", Convert.ToString((Session.Timeout * 60) - 60));
            }
            catch (Exception)
            {
                throw;
            }
        }

        #endregion Events

        //---------------------------------------------------------------------------------------------------------------------------
    }
}

然后在您的母版页中创建一个刷新的iFrame,以保持会话的活动

<iframe id="Defib" src="KeepAlive.aspx" frameborder="0" width="0" height="0" runat="server">
</iframe>

答案 1 :(得分:7)

只需将超时更改为您希望会话持续的分钟数

<!--<configuration>-->
<configuration>
    <system.web>
        <sessionState timeout="20" />
    </system.web>
</configuration>

答案 2 :(得分:3)

您可以在web.config文件中指定会话超时, 也可以使用timepan - 默认为20分钟,也不能将超时属性设置为进程内和状态服务器模式的大于525,601分钟(1年)的值。

<sessionState 
    mode="[Off|InProc|StateServer|SQLServer|Custom]"
    timeout="number of minutes"
    cookieName="session identifier cookie name"
    cookieless=
         "[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"
    regenerateExpiredSessionId="[True|False]"
    sqlConnectionString="sql connection string"
    sqlCommandTimeout="number of seconds"
    allowCustomSqlDatabase="[True|False]"
    useHostingIdentity="[True|False]"
    stateConnectionString="tcpip=server:port"
    stateNetworkTimeout="number of seconds"
    customProvider="custom provider name">
    <providers>...</providers>
</sessionState>

答案 3 :(得分:2)

您可以通过调整元素中的超时属性来更改会话在丢弃之前可以空闲的时间。

请记住,超时值以分钟为单位设置。

  

* 超时: *指定分钟数a   session之前可以是空闲的   弃。超时属性   不能设置为值   超过525,601分钟(1年)   用于进程内和状态服务器   模式。

供参考,请参阅http://msdn.microsoft.com/en-us/library/h6bb9cz9(vs.80).aspx

答案 4 :(得分:1)

答案 5 :(得分:1)

您可以在web.config中更改会话超时值。

如果所需的会话超时为60分钟,则web.config中的标记代码应如下所示:

<system.web>
  <sessionState timeout="60" />