우선, Silverlight는 asp.net이 아니며, WCF는 상태를 유지하도록 특별히 설계된 경우를 제외하고는 디자인 상 무국적입니다.
실버 라이트 3에 상태를 유지하려면 정적 속성이있는 정적 클래스를 만들고 페이지 전체에서 이러한 값을 유지하면됩니다. 그러나 이것은 우아한 해결책이 아닙니다. 이것은 SL이 clientside 런타임이기 때문에 가능하며 URL을 탐색 할 때 다운로드되는 xap 어셈블리 내에 앱이 있으므로 기본적으로 Windows 데스크톱 앱을 다운로드 한 다음 제한된 보안 컨텍스트에서 실행하는 것과 같습니다. 나는 지금 이것의 함축적 의미에 빠지기를 원치 않는다. 그러나 이것이 중요하다는 것을 당신은 알고있다.
문제를 해결하기 위해 더 좋은 방법은 실제로 applicationsettings에 데이터를 저장하고 응용 프로그램이 시작될 때 그것을 다시 사용할 수 있습니다 이렇게 너무
IsolatedStorageSettings.ApplicationSettings.Remove("UserName");
IsolatedStorageSettings.ApplicationSettings.Add("UserName", UserName);
IsolatedStorageSettings.ApplicationSettings.Remove("Password");
IsolatedStorageSettings.ApplicationSettings.Add("Password", UserPassword);
처럼 IsolatedStorage를 사용하는 것입니다. IsolatedStorage에 저장된 모든 정보는 기본적으로 평문이며 동일한 도메인/사이트에서만 액세스 할 수 있습니다.
다른 보안 체계 중 하나를 사용하여 WCF 서비스를 보호해야하며, SL3에서 WCF 서비스로 전송하는 정보는 일반 텍스트로되어 있으며 약간의 노력을 기울이면 누구나 읽을 수 있으며 누구나 wcf 서비스에 전화 할 수 있습니다 SL 앱을 완전히 우회하므로 모든 것을 안전하게 보호해야합니다.
Silverlight를 사용하는 경우 BasicHttpBinding 만 지원되므로 인스턴스화 모드를 Session으로 설정할 수 없습니다. – Phil
확실한가요? 나는 서버 쪽에서 세션 GUID를 얻는다. 실제로 모든 세션을 "손으로"잠그기 때문에 실제로 "세션 당 새 인스턴스 만들기"를 시도하지 않았습니다. – R4cOON