Na stronie obsługującej kontrolkę silverlight można ustawić timer języka javascript i wykonywać wywołania ajax do handler'a Http (.ashx) co 5 minut, aby utrzymać sesję przy życiu. Upewnij się, że twoja klasa Handler implementuje IRequiresSessionState
.
Polecam Handler, ponieważ łatwiej jest kontrolować zwracany tekst odpowiedzi i jest on lżejszy niż strona aspx.
Będziesz także musiał odpowiednio ustawić pamięć podręczną odpowiedzi, aby upewnić się, że przeglądarka wywołuje wywołanie ajax za każdym razem.
UPDATE
Oto przykładowy kod dla 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; }
}
}
Następnie, jeśli używasz jQuery, można umieścić to na aspx strony przyjmującej
setInterval(ping, 5000);
function ping() {
$.get('/Ping.ashx');
}
przedziale jest w milisekundach, więc moja próbka będzie pingować co 5 sekund, prawdopodobnie chcesz, aby była większa. Fiddler to świetne narzędzie do debugowania wywołań ajaxowych, jeśli go nie używasz, uruchom.
Czy możesz użyć timera? – WowtaH