2015-09-29 4 views
1

Пожалуйста, помогите мне, я застрялНеобработанное исключение типа «System.Runtime.Serialization.SerializationException» произошло в mscorlib.dll

Необработанное исключение типа « System.Runtime.Serialization.SerializationException» произошло в mscorlib.dll

Дополнительная информация: Конец потока, встреченный до разбора, был завершен.

Вышеуказанная ошибка пришедшая при выполнении метода

void ReceiveCallback(IAsyncResult AR) 
{ 
    using (ms = new MemoryStream()) 
    { 
     Socket localsock = (Socket)AR.AsyncState; 
     int RecLen = localsock.EndReceive(AR); 
     Array.Resize(ref buffer, RecLen); 
     bnrFormatter = new BinaryFormatter();     
     ms.Write(buffer, 0, buffer.Length); 
     ms.Position = 0;     
     AddListItem("MS length:" + ms.Length + "\nMS position: " + ms.Position);    
     TrackerData data = (TrackerData)bnrFormatter.Deserialize(ms); 

     if (pushToDB(data) == 1) 
     { 
      AddListItem("New packet data received from client of IP " + ((IPEndPoint)localsock.LocalEndPoint).Address.ToString() + " and Port " + ((IPEndPoint)localsock.LocalEndPoint).Port + " ."); 
     } 
     byte[] resBuffer = Encoding.Default.GetBytes("New packet data sent to the server!!"); 
     localsock.BeginSend(resBuffer, 0, resBuffer.Length, SocketFlags.None, new AsyncCallback(EndCallback), localsock); 
     localsock.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), localsock); 
    } 
} 

appers Ошибки в строке

TrackerData data = (TrackerData)bnrFormatter.Deserialize(ms); 

ответ

0

Попробуйте это решение. Установите позицию в 0 вашего потока памяти и не используйте свой объект, кроме типа объекта.

ms.Position = 0; 
    BinaryFormatter bnrFormatter = new BinaryFormatter(); 
    TrackerData data = (TrackerDataObjectType)bnrFormatter .Deserialize(ms); 
+0

Извините, что не работает –

+0

все еще получает ту же ошибку? – shreesha

+0

Да shreesha. можете ли вы объяснить мне, что ошибка в отношении –