2009-03-06 2 views
3

우리는 작게 시작된 웹 응용 프로그램을 추가 한 새로운 기능을 동일한 프로젝트의 일부로 만들었지 만 지금은 이 addons에 대한 새로운 프로젝트를 만들고 싶습니다 ...두 개의 .net 응용 프로그램간에 "세션 상태"유형의 데이터를 공유하는 가장 좋은 방법

우리는 새로운 프로젝트를 만들었고 메인 프로젝트의 global.asax를 inharits하고 메인 프로젝트의 web.config에도 액세스합니다. 글로벌 asax 코드에서 세션이 데이터 무결성을 검사하여 사용자가 로그인했는지 확인합니다. 여기에서 우리는 문제가 발생합니다 .. 사용자가 로그인했지만 사이트 오류로 인해 로그인 한 것으로 표시됩니다. 애드온 프로젝트는 기본 프로젝트가 설정 한 세션 사용자 ID에 액세스 할 수 없습니다.

현재 우리는 세션 상태 서버 또는 sql 상태 서버를 사용하고 있지 않으므로 이전 코드 일부에 대한 두통을 피하기 위해이를 피하고 싶습니다. 우리가 .. 뮤텍스의 경로를 이동 코딩 창을 멀리 할 싶지 않다 또한

세션에 어떤 일이 발생하는지에 대해 사이트 개요 ... 우리가 잘 할 수있는 경우 : ASP와의 사용자가 로그인 코드 (.net 1.1 코드) 사용자가 인증되고 성공적으로 로그인하여 해당 사용자에 대한 GUID를 데이터베이스에 보냅니다. 주 프로젝트 (.net 2.0 코드)는 GUID를 사용하여 사용자 데이터를 수집하고 사용자 ID를 세션. 사용자가 누구인지 알 필요 모든 페이지는 ("용자 ID") 세션에서 그것을 얻을 수

그래서 우리는 Global.asax에를 inheirits 다른 프로젝트를 만들 ,의 Web.config에 액세스 할 수 있습니다 - DONE을!

우리가이 작업을 수행하고자하는 작업 : 이 새 프로젝트에 기본 프로젝트의 애드온 기능이 포함되어 있으면이 페이지에서 기본 프로젝트에서 설정된 세션 ("사용자 ID")에 액세스 할 수 있습니다. - 내가 최소한으로 복잡성을 유지하는 가장 방법은 상태 서버를 사용 에 될 것이라고 말함으로써 내 제안을 접두사 것

답변

3

...이 작업을 수행하는 방법을 모르겠 음. 이것은 그들이 해결하도록 고안된 문제입니다.

두 개의 응용 프로그램 (서로 다른 런타임 버전이기 때문에) 다른 프로세스에서 실행해야하기 때문에 말한 갖는

..., 그들은 직접 데이터를 공유 할 수 없습니다.

하나의 옵션으로 웹 서비스 또는 Remoting을 사용할 수 있습니다. 모든 세션의 데이터를 저장하는 CustomSession 객체를 가지고 각각 Guid으로 식별 할 수 있습니다. Guid-CustomSession에 의해 Application A에서 생성 된 모든 기존 세션을 추적하고 쿼리 문자열을 통해 Guid를 응용 프로그램 B로 전달할 수 있습니다. 응용 프로그램 B는 웹 서비스 또는 Remoting을 통해 응용 프로그램 A에 Guid를 쿼리하고 해당 CustomSession 객체를 다시 가져올 수 있습니다 . 당신은 반대 방향으로도 똑같이 할 수 있습니다.

여기에서 유일한 문제는 앱 A의 페이지에서 앱 B의 페이지로 또는 그 반대로 이동할 때 URL에 항상 가이드가 제공되는지 확인해야한다는 것입니다. 응용 프로그램은 세션이 존재하지 않는지 항상 확인할 수 있으며 Guid를 사용하여 다른 응용 프로그램에 세션이 있는지 확인합니다.

일부 .NET 데이터 구조 (많지 않음)는 .NET 1.1과 2.0에서 다르게 직렬화되므로 원격 또는 웹 서비스에서 개체를 공유 할 때이를 고려해야 할 수도 있습니다.

2

나는 .... 당신이 세션 상태 서버에서 상태를 유지하도록했다

알고하지만 난 여전히 최선의 선택이라고 생각합니다. 특히 로그인 ID 이상으로 데이터를 공유하려는 경우, 향후 확장 성과 유지 보수성을 고려해야합니다. 또한 로그인 데이터 공유는 세션 상태 서버를 통해 쿼리 문자열 등을 통해 클라이언트 측에서 보유하는 것보다 안전합니다.

하지만 다시 세션 데이터를 공유하려고하면 다른 포스터 "Rex M"과 마찬가지로 공유 할 세션 데이터 종류에주의해야합니다. 직렬화 가능.

0

쿠키를 사용하여 사용자 ID를 저장할 수 있습니다. 1.1 & 2.0 응용 프로그램 모두 문제없이 액세스 할 수 있습니다.

2

웹 서비스 또는 원격 사용은 세션 상태 서버와 비슷하지만 직접 구현해야합니다.

직접 해보려는 경우 앞서 언급하지 않은 세션 시간 초과 문제가 하나 더 있습니다. 두 프로세스가 세션이 마지막으로 사용 된 때와 동일한 아이디어를 갖도록해야합니다. 만약 당신이 제대로하지 않는다면 (그리고 내가이 문제를 겪었습니다.) 응용 프로그램의 한 부분에 로그인되어 있지만 다른 부분에는 로그인되어 있지 않은 상태가 될 위험이 있습니다.

0

Rex M : .net의 동일한 버전간에 세션 데이터를 공유하려고합니다. 둘 다 .net 3.5를 실행 중입니다. (.net 2.0 프레임 워크에서 실행 중입니다.) 이미 로그인 데이터를 xfer하는 코드가 있습니다. 2.0 프레임 워크.

우리는 주 프로젝트가 작동하지만 우리는 모듈을 추가하려고합니다. 간단히 말해서 .net 웹 응용 프로그램을 추가하면 네임 스페이스를 사용하지 않고 세션 상태 서버를 설정하고 refrences, 그리고 컴파일, 모든 육즙 것입니다. ..

두 응용 프로그램 (그들과 함께 세션 데이터를 공유하려고했다) 모두 같은 기계 키와 상태를 모두 동일한 응용 프로그램 풀에서 2.0 프레임 워크를 실행하고 있습니다 동일한 컴퓨터에서 실행되는 서버 정보, 다른 폴더에서 만나는 것 (동일한 상위 폴더 공유)

이 작업을 수행하기 위해 수행 할 수있는 작업은 무엇입니까?

(SQL 상태 서버를 사용하지 않고).

0

2 개의 웹 응용 프로그램에서 중요한 세션 변수를 쿼리하고 다시 설정할 수 있도록 하나 이상의 암호화 된 쿼리 문자열 변수를 사용하여 두 웹 응용 프로그램 사이를 탐색 할 수 있습니다. 이것이 가장 쉬운 방법입니다.