2011-04-06 3 views
1
  1. Silverlight 플러그인에서 작업/상호 작용이 수행되지 않을 때 Silverlight 플러그인을 만료하는 ASP.NET 페이지의 세션이 만료/시간 초과됩니까?Silverlight 플러그인 및 ASP.NET 세션

  2. ASP.NET 세션 시간 초과가 20 분이고 사용자가 Silverlight 플러그인과 40 분 동안 계속 상호 작용하면 ASP.NET 세션 시간 초과 여부

참고 :

세션으로, 내가

답변

4

대답은 단순히 예,이 타임 아웃 뜻, 내 WCFservice에와 ASP.NET 호스트 페이지에서 사용되는 세션 변수를 참조하고있다.

Silverlight 응용 프로그램은 자바 스크립트 응용 프로그램 또는 모든 데스크톱 응용 프로그램으로 표시됩니다. SL 응용 프로그램을 실행하는 동안 명시 적으로 ASP.NET 응용 프로그램과의 상호 작용을 수행하지 않으면 ASP.NET은 사용자가 활성 상태임을 알지 못합니다. ASP.NET은 HTTP 요청으로 세션을 새로 고칠 수만 있습니다.

그러나 당신이 당신의 웹 사이트에 요청을 전송하여 실버 라이트 응용 프로그램에서 세션을 유지할 수

은 ASP에 쿠키를 전송하는 브라우저 스택을 사용하여 (일명 킵 얼라이브 요청, 또는 좀 더 유용한 무언가, 당신의 요구 사항에 따라 달라집니다) Silverlight에서 WebClient 클래스를 사용하여 요청한 .NET. 당신이

실버

브라우저로 살아 유지하여 SL 응용 프로그램 (그러므로 이러한 고려에서 무료로 그것을 유지)에서이 논리를 수행하지 않으려는 경우 자바 스크립트 타이머와 JQuery와는 너무 트릭을 할 수 네트워크 스택은 Silverlight에서 기본적으로 활성화되어 있으므로 아무 것도 변경하지 않으면 앱에서 변경합니다.

세션에 대해 연결 유지 만 구현하려는 경우 웹 사이트 구현에 따라 ASP.NET에서 처리되는 URL (aspx 파일 또는 경로, 처리기 ...)을 사이트에 추가하십시오. 예 /KeepAlive.aspx))

을 실버 라이트 애플리케이션에 사용하려면이 코드를 사용하여 timer을 애플리케이션에 추가하십시오. X 분마다 WebClient 클래스를 통해 웹 요청을 수행합니다.

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을 사용하여 페이지로드로부터 X 분마다 동일한 가져 오기 요청을 서버에서 수행하십시오.

$.get('/KeepAlive.aspx', function(data) {}); 
+0

감사합니다. 그렇습니다. 지침서의 세 가지 방법에 대한 지침, 예를 들어, 유감스럽게 생각합니다. 도움이 될 것입니다. 현재 세션을 유지하기 위해이 기능이 필요할 것입니다. 그러나 실제 프로젝트에서 구현해야하는 방법과 가장 좋은 방법은 달라질 수 있습니다. – user287745

+0

주제에 대한 자세한 정보를 제공했습니다. – Eilistraee