• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyjątek podczas deserializacji obiektu

Object Storage Arubacloud
0 głosów
183 wizyt
pytanie zadane 27 lutego 2021 w C# przez michal100032 Początkujący (390 p.)
edycja 28 lutego 2021 przez michal100032

Witam, próbuję przesłać obiekt pomiędzy dwoma komputerami. zamieniam obiekt na byte[] przy pomocy BinaryFormattera:
 

public static byte[] ToBytes(object obj) {
	using (MemoryStream ms = new MemoryStream()) {
		BinaryFormatter formatter = new BinaryFormatter();
		formatter.Serialize(ms, obj);
		return ms.ToArray();
	}
}

A na drugiej maszynie deserializuję:

public static object ToObject(byte[] bytes) {
	using (MemoryStream ms = new MemoryStream()) {
		BinaryFormatter formatter = new BinaryFormatter();
		ms.Write(bytes, 0, bytes.Length);
		ms.Seek(0, SeekOrigin.Begin);
		return formatter.Deserialize(ms);
	}
}

Ale niestety otrzymuję wyjątek:

System.Runtime.Serialization.SerializationException: Unable to find assembly 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
   at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
   at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
   at System.Runtime.Serialization.Formatters.Binary.BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
   at System.Runtime.Serialization.Formatters.Binary.BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
   at System.Runtime.Serialization.Formatters.Binary.BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(BinaryParser serParser, Boolean fCheck)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, Boolean check)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)

Pracuję w Visual Studio 2019.

Bardzo dziękuję za wszystkie odpowiedzi,
pozdrawiam

EDIT: Dla wszystkich którzy też tego próbują: BinaryFormatter się do tego nie nadaje
Stack Overflow - Deserialization exception: Unable to find assembly
 

1 odpowiedź

+1 głos
odpowiedź 27 lutego 2021 przez Wiciorny Ekspert (269,710 p.)

Być może niezgodność bibliotek?  W pierwszej lini masz dokładną informacje 
 

System.Runtime.Serialization.SerializationException: Unable to find assembly 'Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.

W twoim projekcie nie może Visual Studio odnaleźc wskazanej  paczki/biblioteki do wykonania operacji. Nie wiem jak wygląda proces class-path dla C# ale jesteś pewien że  PAKIET z funkcjami jest dołączony ? 

1
komentarz 28 lutego 2021 przez michal100032 Początkujący (390 p.)

Wielkie dzięki Wiciorny, rzeczywiście okazało się że czegoś brakuje, ale nie był to pakiet z funkcjami tylko klasa. BinaryFormatter nie był wstanie zdeserializować tego obiektu pochodzącego z innego komputera, mimo że taka sama klasa znajduje się w tym samym projekcie. Wydaje mi się że nie ma sposobu aby to zrobić przy użyciu BinaryFormattera.

Stack Overflow - Deserialization exception: Unable to find assembly

Podobne pytania

+1 głos
1 odpowiedź 333 wizyt
pytanie zadane 5 sierpnia 2019 w C i C++ przez luna22 Obywatel (1,420 p.)
0 głosów
1 odpowiedź 1,248 wizyt
pytanie zadane 31 marca 2017 w C# przez Zer0AlmostNull Obywatel (1,060 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...