이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 16577|회답: 1

[ASP.NET] 세션 상태는 직렬화할 수 없습니다. "StateServer" 또는 "SQLServer" 모드에서...

[링크 복사]
게시됨 2017. 11. 18. 오후 9:37:45 | | | |
세션 상태는 직렬화할 수 없습니다. "StateServer" 또는 "SQLServer" 모드에서는 ASP.NET 세션 상태 객체를 직렬화하므로, 직렬화 불가능한 객체나 MarshalByRef 객체는 허용되지 않습니다. 커스텀 세션 상태 스토어가 "커스텀" 모드에서 유사한 직렬화를 수행할 경우에도 동일한 제한이 적용됩니다.        



용액:

세션을 할당할 때 변수를 직렬화할 수 없으니, 클래스에 [Serializable]를 추가해 보세요. 문제 해결

[연재 가능]
공용 클래스 마이클래스
{
.......
}

[Serializable]에 대해 이야기해 보겠습니다. 이 도구는 클래스가 직렬화될 수 있음을 컴파일러에게 알리는 데 사용됩니다

직렬화는 객체 인스턴스의 상태를 저장 매체에 저장하는 과정을 의미합니다. 이 과정에서 객체의 공용 필드와 사설 필드, 클래스 이름(클래스가 존재하는 어셈블리 포함)이 바이트스트림으로 변환된 후 바이트스트림을 데이터스트림에 쓰게 됩니다. 객체가 이후 디직렬라이즈될 때, 원본 객체와 동일한 복사본이 생성됩니다.
객체 지향 환경에서 직렬화 메커니즘을 구현할 때는 사용 편의성과 유연성 사이에 어느 정도의 절충이 있어야 합니다. 이 과정을 충분히 통제할 수 있다면 거의 자동으로 만들 수 있습니다. 예를 들어, 단순한 이진 직렬화만으로는 충분하지 않거나, 특정 이유로 클래스 내 어떤 필드를 직렬화해야 하는지 결정해야 할 필요가 있습니다. 다음 섹션에서는 .NET 프레임워크가 제공하는 신뢰할 수 있는 직렬화 메커니즘을 살펴보고, 직렬화 과정을 필요에 맞게 맞춤화할 수 있는 중요한 기능들을 강조할 것입니다.





이전의:ASP.NET 세션을 저장하는 StateServer
다음:SQLServer 한 테이블을 다른 테이블로 복사하는 방법
 집주인| 게시됨 2017. 11. 19. 오후 4:19:48 |
MarshalByRef에서 상속받은 일부 객체들, 예를 들어 DbTransation 객체들은 직렬화할 수 없습니다. 따라서 MarshalByRef 타입을 상속받는 객체를 Session으로 저장할 수 없습니다.
우회 방법은 캐시와 세션 ID를 사용해 세션을 에뮬레이션하는 것입니다. 캐시 클래스는 어떤 유형의 객체도 캐시할 수 있습니다.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com