문제

아시다시피 ASP.NET에서는 다음 세 가지 모드 중 하나로 세션 데이터를 저장할 수 있습니다.

  • InProc
  • 세션 상태
  • SQL 서버

InProc 모드의 경우 직렬화 가능하지 않더라도 모든 종류의 데이터 개체를 저장할 수 있습니다.그러나 세션 상태 및 SQL Server 모드에서는 직렬화된 데이터만 저장할 수 있습니다.

내 프로젝트에는 "InProc" 모드를 사용하여 세션을 저장하는 준비된 포털이 있습니다.일부 확장성 및 오류 처리 문제로 인해 세션 상태를 대신 사용해야 합니다.

이 포털이 세션 컨텍스트에서 직렬화되지 않은 개체를 내부적으로 저장하고 있다는 문제입니다(예: 저장된 개체가 ISerialized 인터페이스를 구현하지 않음).나는 그들의 코드에 접근할 수 없습니다.코드를 변경하지 않고 상태 서버에 세션 개체를 저장할 수 있는 해결 방법이 있습니까?이것이 어떤 종류의 도움이 된다면 나는 여전히 그들의 web.config 파일에 접근할 수 있습니다.

도움이 되었습니까?

해결책

AFAIK, 간단한 대답은 '아니오'입니다.코드를 변경해도 괜찮다면 실제 객체와 사용자 객체 사이에 래퍼 객체를 삽입하고 래퍼가 래핑된 객체를 직렬화하도록 만들 수 있습니다(본질적으로 직렬화 대리자로서). 그냥 코드를 다시 작성해 보세요...

어떤 종류의 물건인가요?일반적으로 세션 상태에 대한 개체는 간단한 데이터 클래스이므로 직렬화하는 데 너무 많은 문제가 있어서는 안 됩니다.

다른 팁

직렬화는 저장 될 수있는 객체의 표현을 생성하고 객체의 상태를 다시 만들기 위해 읽을 수 있습니다.

객체에 값 유형 만 포함 된 경우 iserializable을 구현할 필요가 없지만 [Serializable] 속성 만 있으면됩니다.

이 응답을보다 도움이되거나 당면한 질문에 직접 만듭니다.

직렬화 가능한 방식으로 어떤 식 으로든 해체되지 않은 객체를 직렬화 할 수 없습니다. 객체를 재창조하는 다른 일반적인 방법은 물체가 '직렬화'전과 동일한 상태를 갖지 못하게 할 수 있습니다.

Marc가 언급했듯이, 당신은 당신의 자신의 직렬화 가능한 '래퍼'를 만들어서 그것을 할 수 있지만, 해당 물체에 매우 더 가족이어야하며, 개체는 그것을 다시 만들 수있는 방법이 필요합니다. 그런 방법.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top