2011-03-18 17 views

Respuesta

12

Si usted está tratando de detener la sesión de timeing fuera todo el tiempo que puede hacer esto en lugar de aumentar el tiempo de espera de sesión.

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> 

Mantenga 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 

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

Luego, en su página maestra crear un marco flotante que se actualiza para mantener la sesión activa

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

que funciona bien para mí, tuve este problema cuando la sesión se vuelve timeo ut y luego toda la aplicación se detiene, con esto se mantiene refrescante y funciona tal como se esperaba – Adam

+0

Pero, ¿no forzaría esto una devolución de datos cada vez? – Fandango68

+1

@ Fernando68 - causa una devolución de datos en el iFrame oculto, el resto de la página no se ve afectado. Utilizo una devolución de llamada ajax a un código de webmethod en estos días sin embargo – WraithNath

7

acaba de cambiar el tiempo de espera de los minutos que desea que dure la sesión

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

Usted puede cambiar el valor de tiempo de espera de sesión en web.config.

Si el tiempo de espera de sesión deseada es de 60 minutos, el código marcado en web.config debe tener este aspecto:

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

Puede cambiar la cantidad de tiempo que una sesión puede estar inactiva antes de ser descartado por el ajuste de la atributo de tiempo de espera dentro del Elemento.

Recuerde que el valor de tiempo de espera se establece en minutos.

* tiempo de espera: * Especifica el número de minutos de una sesión de puede estar inactiva antes de que sea abandonado. El atributo de tiempo de espera no se puede establecer en un valor que es mayor que 525,601 minutos (1 año) para los modos en proceso y servidor de estado .

Como referencia por favor ver http://msdn.microsoft.com/en-us/library/h6bb9cz9(vs.80).aspx

3

Se puede especificar el tiempo de sesión en el archivo web.config, También puede utilizar lapso de tiempo - 20 minutos es por defecto, también el atributo de tiempo de espera no se puede ajustar a un valor que es mayor que 525,601 minutos (1 año) para los modos en proceso y servidor de estado.

<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> 
Cuestiones relacionadas