En la página que aloja el control silverlight, puede configurar un temporizador de JavaScript y hacer una llamada ajax a un controlador de Http (.ashx) cada 5 minutos para mantener viva la sesión. Asegúrese de que su clase Handler implemente IRequiresSessionState
.
Recomiendo el controlador porque es más fácil controlar el texto de respuesta que se devuelve, y es más ligero que una página aspx.
También deberá configurar la caché de respuestas de manera adecuada para asegurarse de que el navegador realiza la llamada ajax cada vez.
ACTUALIZACIÓN
Aquí está el código de ejemplo para un HttpHandler
public class Ping : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "text/plain";
context.Response.Write("OK");
}
public bool IsReusable
{
get { return true; }
}
}
Entonces si utiliza jQuery, se puede poner esto en su página aspx anfitrión
setInterval(ping, 5000);
function ping() {
$.get('/Ping.ashx');
}
El intervalo está en milisegundos, por lo que mi muestra hará ping cada 5 segundos, es probable que desee que sea un número mayor. Fiddler es una gran herramienta para depurar llamadas ajax, si no lo usa, comience.
¿Se puede usar un temporizador? – WowtaH