2012-08-02 3 views
8

이 이와 유사한 많은 질문이 있습니다 ...하지만 나는 그들이이 특정 문제에 얼마나 확인할 수 없습니다 :Microsoft.Web.Services3.StateManager 때문에 세션 상태를 직렬화 할 수 없습니까?

없습니다

를 I로 시작 오류를 반환하는 웹 서비스를 세션 상태를 직렬화한다. 'StateServer'및 'SQLServer'모드에서 ASP.NET은 세션 상태 개체 인 을 직렬화하므로 직렬화 할 수없는 개체 또는 MarshalByRef 개체는 이 허용되지 않습니다. 유사한 직렬화 이 '사용자 지정'모드의 사용자 지정 세션 상태 저장소에서 수행되는 경우에도 동일한 제한이 적용됩니다.

따라서 this과 같은 질문은 SerializationException을 찾아서 직렬화 할 수없는 것을 찾아서 직렬화 할 수 있습니다. 간단 소리 ...하지만 난 그것을 볼 때,이 찾을 :

[SerializationException : 어셈블리 'Microsoft.Web.Services3 입력'Microsoft.Web.Services3.StateManager ' , 버전 = 3.0.0.0을 , 문화는, PublicKeyToken = 31bf3856ad364e35는 ']. 직렬화 으로 중립 표시되어 있지 =이 실제로에서 StateManager를 직렬화하려고처럼

이 나를 혼란 ... 그것은 그냥 것을 숨기고 있다는 그것을입니다 ... 소리 내부 다른 뭔가가 StateManager를 직렬화 할 수 없습니까? 그렇다면 무엇을 발견 할 수있는 방법이 있습니까? 또는 StateManager가 실제로 어떤 이유로 직렬화 될 수 있습니까? (나는이 사실을 분명히 밝히지 않고 있다고 생각합니다 ... 미안합니다 ... 질문이 있으시면 최선을 다해 답변을 드리겠습니다.)

내가 주목해야 할 것은 우리가 NCache를 세션 저장소 공급자로 사용하면 어떤 방식 으로든 관련 될 수있는 것처럼 보입니다. 그러나 그것이 내가 보는 것을 어떻게 일으킬 수 있는지는 분명하지 않습니다.

+0

매우 이상합니다. 특정 코드 행으로 고정시킬 수 있습니까? 모든 메소드 호출에서 발생합니까 아니면 특정 메소드 호출에서 발생합니까? –

+0

슬프게도, 둘 다. 때로는 때로는 발생하지만 여러 번 연속해서 발생하지만 그 후에 사라지고 그 후에는 재생산 할 수 없으므로 추적하기가 어려워졌습니다. – Beska

+0

명시 적으로 세션 상태에 있거나 세션을 보조 저장소로 사용하는 모든 내용을 검토 한 것으로 간주하고 실제로 실수로 StateManager를 세션에 넣는 것은 아닙니다. (실제로 그렇게한다면 패턴이 더 많이 보일 것입니다.) 당신이 NCache를 사용하고 있다고 말했기 때문에, 나는 아직 그 회사와 대화를하고 회사의 포럼 등을 검토 할 것입니다. –

답변

1

사용자 지정 개체를 serialize하는 경우 특성을 사용하여 클래스를 장식해야합니다. 이것을 세션 상태에 넣은 객체에 없으면 직렬 변환기가 실패합니다. 저장하려는 항목을 격리하고 속성을 확인해야하며 속성 자체에 속성이 있는지 확인해야합니다.

관련 문제