문제

스트림을 사로화하려고 노력하고 있지만 항상이 오류를 얻습니다. "구문 분석이 완료되기 전에 스트림의 끝이 발생합니다"?

코드는 다음과 같습니다.

        //Some code here
        BinaryFormatter b = new BinaryFormatter();
        return (myObject)b.Deserialize(s);//s---> is a Stream object that has been fill up with data some line over here

아무도 아이디어가 있습니까?

도움이 되었습니까?

해결책

위치를 스트림의 0으로 설정하고 객체가 아니라 객체 유형을 사용하지 마십시오.

        BinaryFormatter b = new BinaryFormatter();
        s.Position = 0;
        return (YourObjectType)b.Deserialize(s);

다른 팁

직렬화가 완료되었고 직렬화 유형이 해제 유형과 일치하는지 확인하십시오 (즉, 하나로 탈선하는 경우 Binaryformatter로 직렬화해야합니다). 또한 stream.flush () 또는 그 효과에 대한 무언가로 직렬화를 완료하도록 직렬화 된 스트림을 확인하십시오.

Serializable] 태그를 직렬화하고있는 클래스에 [Serializable] 태그를 추가 할 때까지 같은 예외가 발생했습니다. :)

그런 다음 모두 완벽하게 작동했습니다.

s.Position = 0;

배열에서 데이터를 복사하기 위해 다시 시작해야하기 때문입니다!

제 경우에는 다음을 사용했습니다.

stream.Seek(0, SeekOrigin.Begin);

스트림을 직렬화 한 후에는 스트림이 매력적입니다. 도움이 되었기를 바랍니다!

방금 비슷한 오류가 발생했습니다

직렬화 및 사제화 할 때 다른 데이터 유형을 얻는 것이 었습니다. 실수로, 데이터를 mariadb에 저장할 때 나는 mediumtext를 사용했고 데이터를 얻을 때 텍스트를 사용했을 때 스트림의 일부만 얻은 이유입니다.

데이터 유형이 동일한 지 확인하십시오.

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