2009-06-14 4 views
0

Asp.NET 세션 ID에 문제가 있습니다. 코드 숨김 변경이 있고 dll을 간 서버로 옮길 때마다/web.config 파일을 수정하면 기존 세션에 액세스 할 수 없습니다. 세션 ID가 재설정됩니다.ASP.NET에서 세션 ID가 사라짐

stateserver를 사용하면 세션 값을 유지할 수 있습니다. 그러나 일부 공유 호스팅 환경에서는 불가능합니다.

변경 사항과 관계없이 세션 값을 유지하는 다른 방법이 있습니까?

답변

3

또한 SQL 서버 기반 세션이 있습니다. 공유 호스팅을 사용하여 설정하거나 설정하지 못할 수도 있습니다. 하지만 할 수 있으면 꽤 잘됩니다. 그것은 매우 영속적 인 이익을 가지고 있습니다. 서버가 다운 되더라도 세션은 유지됩니다. 세션을 사용하는 유일한 방법입니다. 그것은 고객의 모든 혜택을 누릴 수 있기 때문에 공유 호스팅 제공이 당신을 도울 수있는 운이 http://faqfront.com/document/sql-server-session-state

:

는 여기를 설정하는 방법에 대해 설명 기사입니다.

2

또 다른 옵션은 사이트에서 세션을 사용하지 않도록 설정하는 것입니다. 나는 잘못 될 수 있지만 이것이 내가하는 일이라고 생각합니다. 나는 SO 사건을 구체적으로 모르지만 항상 쿠키에서 읽고 쓸 수 있습니다. 이것은 코드 변경을 통해 지속될 것입니다.

이것은 실제 세션 대기 시간을 없애기 위해 내 프로젝트에서 구현하려고하는 것입니다. 그것은 내 마음 속에 아주 신선한 것이 었습니다. 그래서 나는 그것을 밖으로 버릴 것이라고 생각했습니다.

0

을 Session.SessionID가 리셋되지 않습니다. 그러나 저장된 세션 변수는 손실됩니다.

asp.net 세션 ID로 액세스 할 수있는 세션 데이터 테이블 (db)을 사용하는 것이 좋습니다. 따라서 응용 프로그램 재활용이 세션 테이블에 영향을 미치지 않습니다. 변경되지 않은 sessionid로 인해 정확한 세션 변수에 계속 액세스 할 수 있습니다.

2

IIS 응용 프로그램 풀이 재생되도록하는 web.config를 변경할 때마다. 응용 프로그램 풀이 재활용되면 세션에 저장된 모든 개체가 손실됩니다. 이것을 최소화하는 가장 좋은 방법은 (프로세스를 벗어나지 않고 (State Server, Sql Server 또는 memcache 또는 Velocity와 같은 분산 캐시)) 업데이트를 수행하는 빈도를 단순히 제한하는 것입니다. "1am"(로드가 낮을 때마다)에 두십시오. 그렇지 않으면 proc (Sql Server는 공유 환경에서 최상일 수 있지만 성능에 대한 행운을 빕니다)이 최선의 방법 일 수 있습니다.

관련 문제