webconfig tiempo net mvc aumentar asp c# asp.net session timeout postback

c# - tiempo - session.timeout asp



Restablecer el tiempo de espera de la sesiĆ³n sin realizar la devoluciĆ³n de datos en ASP.Net (3)

¿Hay alguna manera de restablecer el tiempo de espera de la sesión sin hacer la devolución de datos?

En este escenario, no solo quiero ocultar la devolución de datos del usuario, necesito restablecer el tiempo de espera sin devolución de datos.

En mi página necesito abrir un cuadro de diálogo e informar al usuario que su sesión se está agotando y que si quiere mantenerla viva necesita hacer clic en un botón. Ahora, cuando hace clic en ese botón, no quiero volver a publicar la página porque generará problemas con los datos. (No entrar en los problemas)

En base a las respuestas, modifiqué el código pero aún no funciona. docs.google.com/open?id=0B-Pl5DH2W9MvMDV6SUNiTXR0Z2M


La única forma en que puedo pensar es hacer una llamada ajax a una página dummy .net como esta:

function keepAlive() { var xmlHttp = null; xmlHttp = new XMLHttpRequest(); xmlHttp.open( "GET", "KeepAlive.aspx", false ); xmlHttp.send( null ); }

y luego llámalo así

<input type=button onClick=''keepAlive();'' >


Para actualizar la sesión necesitas hacer una llamada a algo: sugiero al controlador simple que solo muestre un archivo .gif vacío. Aquí hay un código simple para eso:

public class JustEmptyGif : IHttpHandler ,IRequiresSessionState { // 1x1 transparent GIF private readonly byte[] GifData = { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02, 0x44, 0x01, 0x00, 0x3b }; public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/gif"; context.Response.Buffer = false; context.Response.OutputStream.Write(GifData, 0, GifData.Length); } public bool IsReusable { get { return false; } } }

Este código es solo un controlador, digamos EmptyImage.ashx y observe que he incluido el IRequiresSessionState que lo hace para llamar y actualizar la sesión.

Ahora, lo único que tienes que hacer es actualizar una imagen oculta con algún script, como:

<img id="keepAliveIMG" width="1" height="1" alt="" src="EmptyImage.ashx?" /> <script> var myImg = document.getElementById("keepAliveIMG"); myImg.src = myImg.src.replace(//?.*$/, ''?'' + Math.random()); </script>

He colocado el número al azar al final para evitar mantenerlo en caché y forzarlo a volver a cargarlo. Aquí no se publica ninguna publicación, solo una pequeña carga de imagen.