ASP와 ASP.NET의 세션 공유 ASP(Classic)

ASP와 ASP.NET의 세션 공유에는 여러가지 방법이 존재할 것이다. 그중에 하나는 세션 값이 DB를 경유하도록 하는 것인데, 다음 사이트에서 제시하는 소스가 비교적 간단한 것 같다.

ASP 101 - Sharing Session State between ASP and ASP.NET

원리는 간단하다. ASP에서 ASPX로 세션값을 넘긴다고 하면 :

1. ASP 페이지에서, GUID를 생성한다.
2. DB에 GUID를 키로 하여 세션의 모든 Key/Value를 집어넣는다.
3. ASPX 페이지로 이동하면서 생성한 GUID를 넘긴다.
4. ASPX 페이지에서, DB를 GUID로 조회하여 발견된 모든 Key/Value를 세션에 넣는다.
5. 재사용 불가능하도록 하기 위해 가져온 값들을 DB에서 모두 지운다.

반대의 경우도 마찬가지다.

그런데 위 주소에서 제공되는 소스에는 한가지 문제가 있다. ASP와 ASPX간에 서로 세션에 추가한 값은 잘 공유가 되는데, 삭제한 값은 반영되지 않고 남아있다. 이를테면 ASP 페이지에서 계정 정보를 삭제했는데 ASPX 페이지에서는 계속 로그인되어 있는 식이다. 기존의 세션 내용을 삭제하지 않고 유지하면서 새 값들을 덮어 씌우기만 하기 때문이다. 때문에 정상 동작하게 하려면 기존의 세션을 모두 지워줘야 한다. 정확히는 GetSessionFromDatabase() 메서드가 실행되기 전에 Session.Clear() 메서드를 호출해주면 된다.

Tag :
, ,

Leave Comments