Ich möchte gerne ein Object per NetworkStream verschicken,dazu verwende ich die Klasse BinaryFormatter.
public class Codierung
{
private static BinaryFormatter serializer = new BinaryFormatter();
public Codierung()
{
//
// TODO: Fügen Sie hier die Konstruktorlogik hinzu
//
}
public static object decodieren(NetworkStream ns)
{
return (object)serializer.Deserialize(ns);
}
public static NetworkStream encodieren(NetworkStream ns,object ob)
{
serializer.Serialize(ns,ob);
return ns;
}
}
Wenn ich beim Client nun das Object sende kommt beim Server folgender Fehler:
"Die Assembly ClientProjekt ,Version xyz,Culture=neutral,PublicKeyToken=null kann nicht gefunden werden,
Die Serverklasse und die Clientklasse befinden sich in 2 verschiedenen Projekten.
Mfg alf468
Original von alf468
Die Serverklasse und die Clientklasse befinden sich in 2 verschiedenen Projekten.Mfg alf468
...und haben vermutlich nicht dieselbe Version
--> beide brauchen dieselbe Version... oder Du seriralisierst das ganze als XML
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Dann verwende ich die Klasse XmlSerializer. Nur leider kommt da schon ein Fehler beim Senden.
Unbehandelte Ausnahme: System.InvalidOperationException: Beim Generieren des XML-Dokuments ist ein Fehler aufgetreten. ---> System.InvalidCastException: Die angegebene Umwandlung ist ungültig.
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_Codierung(Object o)
--- Ende der internen Ausnahmestapelüberwachung ---
public class Codierung
{
private static XmlSerializer serializer = new XmlSerializer(typeof(Codierung));
public Codierung()
{
//
// TODO: Fügen Sie hier die Konstruktorlogik hinzu
//
}
public static object decodieren(NetworkStream ns)
{
return (object)serializer.Deserialize(ns);
}
public static NetworkStream encodieren(NetworkStream ns,object ob)
{
serializer.Serialize(ns,ob);
return ns;
}
}
OK dummer Fehler 😁
Der Type muss natürlich die Object Klasse sein. Das Senden geht nun nur kommt beim Server eine Fehlermeldung: "Fehler in XML Dokument (0,0).
Was ist nun wieder Falsch?
Problem gelöst 😁
byte[] bytes=new byte[client.ReceiveBufferSize];
int intBytes=ns.Read(bytes,0,client.ReceiveBufferSize);
MemoryStream MStream = new MemoryStream();
MStream.Write(bytes, 0, intBytes);
MStream.Seek(0,SeekOrigin.Begin);
XmlSerializer serializer = new XmlSerializer(typeof(SendObject));
Hier gab es schon mal so ein Problem XmlSerializer.Deserialize
Hatte das aber vorher nie gefunden.