2012-02-03 1 views
1

저는 AppFabric Server 캐싱으로 새로 왔지만 그걸 가지고 놀고 난 후에는 모든 것이 꿈처럼 작동했습니다. 예를 들어 데이터 테이블을 캐시에 추가하고 정상적으로 사용하도록 설정할 수 있습니다.AppFabric Server 캐시는 null 값을 가진 dll 객체를 반환합니다.

나는이 기능에 대해 종료 한 제 3 자와이를 테스트하려고있어 로그인 세션 데이터를 포함하는 DLL (세션 ID, 날짜의 등)

난 당신이 DLL을 소비하는 방법으로 WCF 서비스를 만들어 벤더 로그인하고 해당 세션을 캐시에 저장합니다. 이 작업은 정상적으로 작동하며 캐시의 통계를 PowerShell로 확인하여 확인할 수 있습니다. 그런 다음이 캐시 된 세션을 선택하여 작업을 실행하는 데 사용할 다른 방법을 만들었습니다. 여기가 내가 벽에 달려있다.

내가 캐시에서 세션을 얻을 수 있었던 것을 볼 수 있지만, 세션 객체 내에서 정보가

내가 사방하지만 아무도에서이에 대한 도움말을 serching 봤는데 (세션 ID, 날짜의 ...) 널 솔기가이 문제에 직면합니다. 그래서 제 질문은

입니다
  1. 캔 AppFabric 서버 캐시 (공개/비공개 어떤 역할을 가지고 있지) 지정된 객체의 모든 필드 값?
  2. 값이있는 키와 캐시 된 개체를 볼 수있는 실제 캐시 내용을 볼 수있는 방법이 있습니까?

가능한 모든 의견을 남겨주세요!

감사 미코 AppFabric에서

답변

1

할 수 있습니다 (:-) 미국 독자 또는 직렬화) serialisable 만 캐시 객체. 세션 객체를 캐시에 저장할 수 있다는 사실은 실제로 직렬화 할 수 있음을 암시합니다. 하지만 여기서 무슨 일이 벌어지고 있는지를 알아 내기 위해 조금 더 자세히 조사 할 필요가 있습니다. binary serialisation와 기본적

모든 필드/개체의 특성은 공개되어 직렬화 및 개인 ( XML serialisation공개 값을 집어 반면). 우리는 AppFabric이 사용하는 직렬화의 특징을 알지 못하지만, 바이너리 직렬화가보다 효율적으로 사용되는 경향이있다. 그래서 그것은 커버 아래에서 사용되는 것이 합리적인 가정이다. 그러나 비 일련 화 attribute을 사용하여 일련 화 동작을 재정의 할 수 있으므로 NonSerialized으로 표시된 항목은 일련 화 된 버전의 개체에 포함되지 않습니다. Selective Serialisation의 MSDN 페이지에서는 보안에 민감한 정보를 직렬화 할 수없는 것으로 표시해야한다고 권고합니다.

세션 하이재킹의 핵심이기 때문에 세션 ID는 보안에 민감한 정보의 제목 아래에 있으므로 분명히 직면하고 있습니다. ILDasm 또는 Reflector를 사용하여 타사 DLL을 조사하여 세션 클래스의 필드가 실제로 직렬화되지 않은 것으로 표시되는지 확인할 수 있습니다.

이 문제를 해결할 수 있습니까? 물론 모든 속성을 직렬화 할 수 있고 대신 캐싱하는 제 3 자 개체에서 채운 자체 Session 클래스를 만드는 것을 막을 수있는 방법은 없습니다. 그러나 당신이 본질적으로 그들이하는 일을 멈추려 고 노력하고 있다는 것을 명심하십시오.

+0

필, 앞으로 도움이되는 완전히 훌륭한 답변입니다. 도와 주셔서 감사합니다. 문안 인사 – user1187122