2009-11-23 12 views
4

IIS6 서버에서 실행되는 데 사용되는 Classic ASP로 작성된 오래된 웹 응용 프로그램을 가지고 있습니다. 그런 다음 긴 이야기를 짧게 썼습니다. SunOne ASP를 실행하는 Linux 서버로 옮겼습니다. (몇 가지 사소한 수정 후), 그리고 지금은 응용 프로그램이 원래 사용되는 일부 타사 COM 컨트롤에 액세스하기 위해 입찰가를 다시 Windows 서버로 옮겼습니다. 2008 년 IIS7을 실행합니다.IIS7 및 클래식 ASP 세션

전체적으로 앱이 정상적으로 작동하지만 세션 변수가 손실되면서 무작위 문제가있는 것 같습니다. 이것은 사용자가 시스템에서 자동으로 로그 아웃된다는 의미입니다.

이것은 모두 매우 간단합니다. 세션 변수를 사용하여 로그인 상태 (다른 비트와 조각 몇 개를 포함)를 보유합니다.

If Session("login_status") <> "loggedin" Then 
Response.Status="302 Object moved" 
Response.Redirect "/admin/default.asp" 
End If 

이 응용 프로그램은 공유 호스팅 서버에서 실행, 그리고 내가 다른 무엇보다 걱정하는 것은이 내가 같은 플랫폼 I의 다른 ASP 애플리케이션을 호스팅해야합니다 주로 그래서 만약 일어나고있는 이유입니다 비슷한 문제가 생기지 않을거야.

IIS7이 응용 프로그램 풀을 재활용하고 프로세스의 모든 세션 데이터를 지울 수 있기 때문에 이것이 가능합니까? 그리고 그럴 경우, 다른 모든 것이 실패 할 경우 카드에서 다음 상태 인 내 자신의 상태 관리/세션 처리 루틴을 작성하는 과정에서 부족한 부분에 대해 수행 할 수있는 작업은 무엇입니까?

+0

동시에 모든 세션을 잃는 사용자가 있습니까? 아니면 한 명 또는 두 명입니까? – AnthonyWJones

+0

분산 방식으로 사용되므로 확실치 않으며 모든 사람이 동시에 사용하지는 않습니다. 모든 사람이 문제를 경험합니다. –

답변

0

작업자 프로세스가 재활용 될 수 있지만 정기적으로 (즉, 서버가 망치질 경우 매 12 시간마다) 간헐적으로 만 발생해야합니다.

장거리지만 문제가 발생하면 IE8을 사용하고 있습니다. IE8에서 쿠키를 삭제하는 것과 비슷한 문제가 있었지만 이제는 우리가 "ie7과 같은 동작"헤더를 보내고 있습니다. 요청 (BTW의 JScript와 ASP) :

+0

아니요, 모든 플랫폼에서 사용 가능합니다. Safari 나 FF를 Mac에서 사용하거나 IE를 Windows에서 사용하면됩니다. 클라이언트 쪽에서 다음과 같은 헤더 플러그가 이미 있습니다. 내 의심 및 유효한지 또는 모르겠는데 이것이 공유 호스팅이기 때문에 호스트 제어 패널에 "응용 프로그램 풀 재활용"옵션이 있습니다. 동일한 서버의 다른 누군가가이를 수행하면 우리 모두가 필요하다는 것입니다 . 그럴 것 같니? –

+0

로드 밸런서? 그렇다면 끈적 거리는 세션이 없을 수도 있습니다. 리사이클링은 그렇게 할 것이지만 같은 애플리케이션 풀에 모두 있어야하는 것은 아닌가? 이것은 내가 아는 경찰이지만 그 중요하다면 다른 호스트에서 30 무료 평가판을 사용하여 그것을 시도하고 당신이 동일한 문제가 있는지보십시오? –

1

당신은 당신의 시간에 이야기해야하지만

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/> 

이 붉은 청어 수 있습니다 :

// Force IE8 to act as IE7...grumble 
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE7"); 

그리고 우리의 모든 페이지의 머리에

osting 회사. 수영장이 재활용되고있는 것처럼 들립니다. 주인은 이것들에 대한 기록과 그들이 생성 된 이유를 기록해야합니다.

다른 사이트와 사이트 공유 여부를 물어야합니다.

1

IIS7에서 실행 중이고 SSL과 비 SSL 페이지간에 리디렉션하는 경우 사이트 구성 속성에 따라 클래식 세션이 다를 수 있습니다. IIS에서 "ASP"섹션의 "세션 등록 정보"섹션을 검토하십시오 - "보안 연결의 새 ID"에 대한 설정이있을 수 있습니다.

3

정원이 필요없는 웹 정원을 운영하지 않아야합니다. 응용 프로그램 풀 설정의 프로세스 모델에서 "최대 작업자 프로세스"를보십시오. 값이 "1"보다 큰 경우 설명하는 문제가있을 수 있습니다. 나는 내가 그랬다는 것을 안다.

읽기 여기에 웹 가든에 대한 다음 (IIS 7.5)에 대한 힌트에 대한 http://geekswithblogs.net/vkamat/archive/2004/11/17/15145.aspx

+0

세션 ID가 동일하게 유지 되더라도 세션 데이터가 다른 값 사이에서 순환하는 문제가있었습니다. 이것이 문제라고 밝혀졌습니다. –

4

덕분에 '응용 프로그램 풀의 (고급 설정) -> 유휴 시간 제한 (그룹 : 프로세스 모델)'!

현재 세션을 잃어버린 내 Classic ASP 사이트의 경우 '유휴 시간 제한 (분)'에 사용되는 개별 응용 프로그램 풀의 기본값은 분이었습니다. 이 값을 더 높은 값으로 변경 했으므로 이제는 괜찮습니다. 이것은 현재 트래픽을 유발하는 유일한 테스트 사용자로서 나를 가진 테스트 시스템이므로 5 분 이상 사이트에서 아무 것도하지 않으면 "유휴 타임 아웃"이 적용된 것처럼 보입니다.

관련 ASDev

이 나에게 무슨 일이 있었
1

! 이 문제는 IIS의 응용 프로그램 풀에서 Maximum Worker Processes 값을 1으로 설정하여 해결되었습니다.