2011-07-04 4 views
0

HttpContext.Items [typeof (UserProfile)] 객체에 액세스하는 데 문제가 있습니다. Http 처리기가 호출 될 때가 있습니다. 여기서 UserProfile은 세션 쿠키에 저장된 객체입니다. 폼 인증을 통해.ASP.NET 웹 사이트 HTTPHANDLER에서 HttpContext.Items가 무작위로 비어 있습니다.

배포되는 동일한 컴퓨터에서 브라우저를 열거 나 Visual Studio에서 디버깅 할 때 100 % 작동하지만 원격 컴퓨터에서 테스트 할 때 임의로 오류가 발생합니다. 약간의 추적을했는데 기본적으로 HttpContext.Items [typeof (UserProfile)]는 세션 쿠키가 성공적으로 전달 된 경우에도 null입니다.

IReadOnlySessionState를 HTTPHandler에 구현하려고했지만 여전히 작동하지 않습니다. 3 분 또는 그 이상 로그인 한 후에도 그 후 100 % 작동한다는 것을 때때로 깨닫습니다.

왜 이런 일이 일어나고 해결책이 될지에 대한 아이디어가 있습니까?

들으

답변

0

세션 상태는 인증을 형성하고 HttpContext.Items 모두 관련이없는 - 당신이 그들을 혼합 왜 그렇게 확신하지. 양식 인증에는 세션 쿠키와 별도의 자체 쿠키가 있으며 수명 시간이 다를 수 있습니다. 사용자가 인증되었는지 여부와 상관없이 세션 상태를 가질 수 있습니다. 나는 또한 당신이 세션 쿠키에 UseProfile 객체를 저장하는 방법을 확신하지 못한다. - 몇 가지 코드를 넣으라고 조언한다.

HttpContext.Items은 각각 HttpRequest과 관련된 속성 모음입니다.이 컬렉션은 요청 수명에만 사용할 수 있으며 컬렉션을 유지하는 기본 제공 메커니즘이 없습니다. 따라서 일부 모듈 또는 global.asax의 각 요청에 대해이 모듈을이 컬렉션에 배치하지 않는 한이 컬렉션의 UserProfile 객체를 가져올 가능성은 거의 없습니다. 코드 샘플을 사용하여 정확히 무엇을하고 있는지 설명해야합니다.

+0

IReadOnlySessionState coz를 사용하고 있습니다. 아이디어가 없어졌으며 Google 검색 중에 나타났습니다. 사람들이 저를 대답하지 않을 것이라고 언급 한 것 같습니다. 사용자 프로필은 global.asax의 세션 쿠키에있는 티켓에서 추출되어 HttpContext.Items에 할당됩니다. 그러나 때로는 HTTP 처리기 (배포 된 서버에서)에서 여전히 null입니다. – Joshscorp

+0

@Titan, 세션 쿠키에 데이터를 넣고 꺼내는 코드를 게시 할 수 있습니까? 세션 쿠키를 사용하여 맞춤 데이터를 저장하는 것이 약간 이상합니다. 별도의 쿠키를 선택했을 것입니다. – VinayC