2011-03-16 4 views
1

Windows 2003 컴퓨터의 서버 쪽 VB ASP 코드 asp.net 2.0 *이 설치되어 있습니다. 사용자가 처음 웹 사이트에 연결할 때 Global.asa 화재의 Session_OnStart가 세션 객체가 null 인 이상한 문제가 발생했습니다. 간단한 식으로 뭔가 : 개체가 필요합니다 :global.asa의 classic asp 오류 : 필요한 개체 : 'Session'

Session.Timeout = 30 

다음과 같은 오류가 발생합니다 '세션'

웹 사이트가 IIS 관리자 홈 디렉터리 탭에서 '생성'하고 있으며, 세션 구성 페이지에서 활성화 사이트 용.

대부분의 경우 사용자가 페이지를 새로 고치면 세션 개체가 존재합니다. 그러나 고유 한 사용자를 처음 방문하면 항상 오류가 발생합니다.

제안 사항? 코드는 이전 Win2000 시스템에서 작동했기 때문에 오류가 없습니다.

다시 말하면 : .Net 2.0이 설치된 IIS6을 실행하는 Windows 2003 Server. 웹 사이트가 가상 디렉터리가 아닌 응용 프로그램으로 실행되고 있습니다.

+0

클래식 ASP를 ASP.net 클래식과 혼합하는 것처럼 들립니다. asp.net에는 "구성 페이지"가 ​​없습니다. 클래식 ASP는 ASP.net 2.0과 아무 관련이 없습니다. ASP.net을 실행하려고한다면 Global 파일의 이름을 Global.asax로 바꿔야합니다. – Dee

+0

asp.net을 실행하려고하지 않고 asp 만 실행하십시오. 내가 설치 한 것을 목록에 나타낼 것입니다. – MonkeyWrench

+0

아마도'Session'은 응용 프로그램이 (아직 첫 번째 요청이 아니므로) 초기화 작업을 완료하지 않았기 때문에 아직 생성되지 않았습니다. 따라서 실제 수정 작업이 없다고 생각됩니다. 'Session'에 다른 용도가 있습니까, 아니면'Timeout' 값을 설정하고 있습니까? –

답변

2

문제를 파악했습니다. 웹 사이트에 사용 된 앱 풀에 둘 이상의 작업자가 있기 때문입니다. 작업자 프로세스가 클라이언트의 요청을 처리 할 것이라는 보장이 없으므로 각 작업자 프로세스가 클라이언트 세션의 자체 인스턴스를 생성하므로 IIS는 다른 작업자 프로세스가 요청을 처리해야한다고 결정할 때 해당 세션을 삭제하고 다시 작성합니다. 문제는 응용 프로그램 풀에서 하나의 작업자 프로세스 만 사용하고 다른 모든 웹 사이트를 응용 프로그램 풀에서 자체 풀로 가져와 해결되었습니다.

저는 이제 앱 풀에 여러 명의 작업자를두고 작업자 프로세스를 고수 할 방법을 찾고 있습니다. 그러나 그것은 제가 조사 할 다른 문제입니다.

+0

건배! 웹 가든? –

+0

텃밭, 토마토 정원 ... 틀림 없음. 예. – MonkeyWrench

+0

롤 좋은 작물을 제공 희망! ;) –

0

매우 흥미로운 문제입니다.

세션이 명시 적으로 중단되거나 결국 시간 초과되면 즉시 삭제된다는 것을 알고 있습니다. 일어날 수 없다는 것을 보장하기 위해 다음과 같은 코드를 추가합니다.

If Session("test") Is Nothing Then 
    Response.Redirect("Whatever.asp") 
End If 

이 블록에 개체를 생성하는 코드를 호출 할 수도 있습니다. 이렇게하면 세션이 어떻게 든 파괴되었음을 감지하면 다시 만들 수 있습니다.

+0

시도해 보았습니다. 때로는 사용자가 몇 초 동안 두 사람 사이를 반복하게됩니다 ... 이상적이지 않습니다. – MonkeyWrench