Nella pagina che ospita il controllo Silverlight, è possibile impostare un timer javascript e effettuare una chiamata ajax a un gestore HTTP (.ashx) ogni 5 minuti per mantenere viva la sessione. Assicurati che la classe Handler implementi lo IRequiresSessionState
.
Raccomando il gestore perché è più semplice controllare il testo di risposta restituito ed è più leggero di una pagina aspx.
Sarà inoltre necessario impostare correttamente la cache di risposta per assicurarsi che il browser effettui la chiamata ajax ogni volta.
UPDATE
Ecco il codice di esempio per 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; }
}
}
Quindi se si utilizza jQuery, si può mettere questo sul vostro host aspx pagina
setInterval(ping, 5000);
function ping() {
$.get('/Ping.ashx');
}
L'intervallo è in millisecondi, quindi il mio campione eseguirà un ping ogni 5 secondi, probabilmente vorrai che sia un numero più grande. Fiddler è un ottimo strumento per il debug di chiamate ajax, se non lo usi, inizia.
È possibile utilizzare un timer? – WowtaH