Ответ - просто да, истечет время ожидания.
Вы должны увидеть приложение Silverlight как приложение javascript или как любое приложение для настольного компьютера.Если вы не выполняете явное взаимодействие с приложением ASP.NET во время выполнения приложения SL, ASP.NET не будет знать, что ваш пользователь активен: ASP.NET может обновлять сеансы только по HTTP-запросу.
Но вы можете поддерживать сеанс из приложения Silverlight, отправляя запросы на свой веб-сайт (так называемые запросы keepalive или что-то более полезное, это зависит от ваших требований)
Используйте стек браузера для отправки файлов cookieв ASP.NET с вашим запросом, используя класс WebClient в Silverlight.Таймер javascript и jquery тоже могут сработать, если вы не хотите выполнять эту логику в своем приложении SL (поэтому не допускайте этих соображений)
Поддерживайте активность с Silverlight
Сетевой стек браузера по умолчанию включен в Silverlight, поэтому, если вы ничего не изменили, ваше приложение будет его использовать.
Если вы хотите реализовать только поддержку активности для вашего сеансадобавьте на свой сайт URL-адрес, обрабатываемый ASP.NET (файл aspx или маршрут, обработчик ... в зависимости от реализации вашего веб-сайта (например, /KeepAlive.aspx))
в вашем Silverlightприложение, используйте этот код, чтобы добавить таймер в приложение.Он будет выполнять веб-запрос через класс WebClient каждые X минут.
var timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0,5,0)//run every 5 minutes (should be shorter than your session timeout.
timer.Tick+=(s,args)=>
{
var client = new WebClient();
client.DownloadStringAsync(keepAliveUrl);
};
timer.Start();
Код должен вызываться после запуска приложения (например, в файле App.xaml.cs)
Поддерживайте активность с JS (JQuery)
На своей странице хостинга SL используйте JQuery , чтобы выполнить тот же запрос get на сервере, каждый Xминут от загрузки страницы.
$.get('/KeepAlive.aspx', function(data) {});