문제

C# 응용 프로그램을 .NET (클라이언트 서버)로 포트하려고 시도하고 직렬화와 관련된 문제가 발생합니다.

Linux 클라이언트는 직렬화 및 객체이지만 Windows Server는이를 실시 할 수 없어 오류를 제공합니다.

System.Runtime.serialization.serializationException
필드 "MarshalbyRefoBject+__ Identity"수업에서 찾을 수 없습니다.

Dessorialization은 Binaryformatter를 통해 수행됩니다.

BinaryFormatter formatter = new BinaryFormatter();
formatter.Deserialize(data);

해당 클래스에는 직렬화 가능한 속성이 있으며 MarshalbyRefobject에서 상속합니다. MarshalbyRefobject의 상속을 제거하면 잘 작동합니다. 모든 것이 창에서 잘 작동하므로 이것이 모노 특정 문제라고 가정합니다.

모든 도움/조언은 대단히 감사하겠습니다 ^_ ^

도움이 되었습니까?

해결책

이진 직렬화는 개인 구현 세부 사항에 의존합니다. 귀하의 경우 개인 분야 __ identity. 모노 개발자는 개인 구현 세부 사항에 액세스 할 수 없기 때문에 때때로 일치하지 않으므로 이진 직렬화는 .net과 mono간에 항상 호환되는 것은 아닙니다.

Mono에 테스트 사례를 제출하십시오.http://www.mono-project.com/bugs

이 문제를 해결하기 위해 수업을 위해 자신의 사용자 정의 직렬화를 수행 할 수 있습니다.

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