2011-01-13 3 views
8

ASP.net에서 세션 시간 초과를 연장하지 않고 서버에서 데이터를 가져 오는 방법이 있습니까? 페이지가 닫힐 때까지 사용자 상호 작용없이 몇 분마다 완료해야합니다. 요청에 따라세션 시간 초과를 연장하지 않고 서버에서 데이터 가져 오기

추가 컨텍스트 내 웹 애플리케이션에

페이지는 특정 조건 (이 경우 30 분의 시간이 예정 긴급 유지 보수를) 확인하기 위해 서버를 몇 분 간격으로 폴링 할 필요가있다. 조건이 true이면 페이지에 사용자에게 메시지가 표시됩니다. 조건이 거짓 일 때 아무 일도 일어나지 않아도됩니다.

내가 알기로는 서버에 대한 포스트 백이 세션이 만료 될 때까지 시간을 재설정합니다. 우리는 페이지가 서버를 폴링 할 때마다 세션이 확장/새로 고침/재설정/단어가 무엇이든간에 세션을 원하지 않습니다. 세션 타임 아웃을 재설정하지 않고 서버를 자동으로 폴링하는 방법이 필요합니다.

감사합니다.

+0

어쩌면 우리는 좀 더 자세한 정보가 필요합니까? 세션 시간 초과를 연장 할 수 있습니다. – Remy

+1

AJAX 웹 서비스 호출은 사용자의 세션을 확장해서는 안됩니다. – Refugee

+1

@Refugee :하지 않아야합니까?의견을 답변으로 게시 하시길 바랍니다. 답을 찾지 못했을 수도 있습니다. –

답변

3

HTTP 시간 초과를 방지하기 위해 긴 HTTP 요청이 필요한 경우 web0config을 참조하십시오. 여기에서 executionTimeout은 초 단위로 나타납니다. http://msdn.microsoft.com/en-us/library/e1f13641(v=vs.71).aspx입니다.

진정한 세션 시간 초과 문제 인 경우 오랜 프로세스가 실행되는 동안 동일한 사용자 세션에서 서버에 비동기 적으로 ping을 수행 할 수 있습니까?

편집 : 당신이 사이트의 정상적인 부분의 세션 상태 범위의 외부 서비스로 "웹 사이트 유지 보수"웹 서비스를 분할하는 경우에, 당신은 자주 호출 할 수 있습니다, 당신의 편집을 기반으로 너도 좋아할거야. 예를 들어, 현재 웹 사이트에서 ASMX 웹 서비스를 사용하고있는 경우, 예를 들어 응용 프로그램의 디렉토리와 같은 별도의 응용 프로그램으로 분할하면 동일한 도메인 아래에있게됩니다. 나는 그것이 잘 될 것이라고 상상한다.

현재 (ASMX, WCF 등) 어떤 웹 서비스 유형을 호출하고 있는지, 아니면 현재 호출하고있는 웹 서비스가 ASPX 응용 프로그램 페이지

+0

편집에 필요한 솔루션이 포함되어 있습니다. –

1

첫째, 쿼리가 세션 제한 시간을 초과하여 실행되는 경우 쿼리에 심각한 문제가 있습니다. 차라리 먼저 쿼리를 수정하려고합니다.

<img id="dummyImage" src="/Dummy.aspx" width=0 height=0/> 

<script type="text/javascript"> 
    var dummyImage = document.getElementById("dummyImage"); 
    setInterval(function(){ 
     dummyImage.src = "Dummy.aspx?_tmp=" + (Math.random() * 100000); 
    }, 900000); 
</script> 
: 15 분마다 같은 URL을 새로

앱에 Dummy.aspx을 가질 수 있습니다 다음 이미지 요소를 가지고 : 여전히 세션을 사용하여 작업을 수행하려는 경우,이 시도

이렇게하면 전역 수준에서 세션 시간 초과에 영향을주지 않습니다.

+2

dummyImage.src = "Dummy.aspx? ....."를 수행하면 브라우저가 해당 URL에 sessionId 쿠키를 포함하여 GET 요청을 보내고 세션 시간 초과를 다시 설정합니다. –

-2

AJAX 호출을 발생시키는 자바 스크립트 타이머를 사용하십시오. 따라서 PageLoad 이벤트에서 자바 스크립트 setInterval(functiontocall(), timetowait);의 기능을 반향 출력합니다. 당신이 호출하는 메소드는 AJAX가 당신의 쿼리를 수행하는 웹 서비스에 충돌 할 것입니다.

사용자가 페이지를 닫을 때까지 계속 호출됩니다.

세션이 AJAX 히트에서 새로 고침되지 않습니다.

+3

AJAX가 동일한 웹 응용 프로그램에서 실행되면 세션이 새로 고침됩니다. 그래도 도움을 주셔서 감사합니다. –

+1

AJAX 요청은 비동기 적이라는 점을 제외하면 일반 요청과 같습니다. 즉, 세션 ID 쿠키도 포함시켜 세션에 요청을 연결하고 따라서 시간 초과를 다시 설정합니다. –