2010-03-09 7 views
0

우리의 asp.net 2.0 응용 프로그램은 응답을 클라이언트에 보내기 전에 매우 긴 프로세스 (동기화 됨)를 가지고 있습니다. 나는 우리 애플리케이션이 여전히 첫 번째 요청을 처리하는 동안 클라이언트 IE8이 오랜 시간 동안 응답을 기다린 후에 정확히 두 번째 요청이 보내 졌음을 관찰했다.세션에서 변경된 데이터 손실

초기 요청이 도착하면 플래그를 저장하기 위해 미리 정의 된 키가있는 페이지 세션을 사용하고 클라이언트 프로세스가 응답을 기다리는 동안 긴 프로세스를 시작하므로 두 번째 요청이 들어 오면 응용 프로그램에서 세션 값을 확인합니다. 응용 프로그램이 세션 플래그를 설정하고 처리를 시작한 후 Fiddler "Abort Session"을 사용하여 초기 요청을 중단하고 즉시 두 번째 요청 (첫 번째 요청과 동일)이 자동으로 전송되지만 이전에 설정된 세션 값은 더 이상 존재하지 않게됩니다.

의견이 있으십니까?

답변

0

진행중인 프로세스 중에 두 번째 요청이 들어올 때 하나의 항목 만 저장하기 때문에 현재 요청 값을 덮어 쓰지 않습니까? 두 요청이 같은 세션에서 들어오고 있다고 가정합니다.

플래그 목록에 두 번째 항목을 추가하고 이전 항목을 찾아 삭제할 수 있도록 항목 목록을 저장하는 것이 좋습니다.

두 번째 요청 세션을 시작하기 전에 현재 세션에있는 요청을 죽일 수 있습니까?

나는 당신의 문제/해결책을 잘 이해하지 못했지만 잘하면 도움이된다. 귀하의 의견에 따라

편집 :

더 이상은 아마 존재하는 경우 인해 세션 시간 초과와 두 번째가 액세스 할 수 없을 것 때문에 값을 닦아. 똑같은 세션에서 두 번째 연결이 들어 옵니까? 두 경우 모두 세션 ID를 비교하십시오. 또한 시간 초과를 확인하십시오.

또한이 정보를 응용 프로그램 캐시에 저장할 수 있습니다. 실제 긴 만료 기간이 있습니다. 세션 ID가되는 사전이나 사용자 당 하나의 프로세스 만 있으면 값을 저장할 수있는 사전이 있어야합니다. 동일한 사용자가 두 번째 요청을 수신하면 세션 ID와 상관없이이를 찾을 수 있습니다. 프로세스가 완료되면 비워 두십시오.

+0

예, 하나의 항목이지만 값을 설정하기 전에 먼저 플래그가 세션에 저장되었는지 여부를 확인합니다. 문제는 두 번째 요청이 들어오고 첫 번째 세션에서 설정된 플래그가 더 이상 존재하지 않는다는 것입니다. – user150528