Я сделал как клиент, так и службу с использованием C# и WCF. Они отлично работают на всех современных ОС, которые я мог бы попробовать, как x86, так и x64.Объект, который не является сериализуемым в Windows XP
Теперь, при попытке его на Windows XP оно не»работу из-за этой ошибки:
Type 'System.Threading.Tasks.Task`1[MyObject[]]' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute
На моем интерфейсе службы я использовал этот
[OperationContract()]
List<MyObject> GetFileList(string randomString, string uniqueID);
И MyObject
выглядит эта
[Serializable()]
public class MyObject
{
public string oneRandomWorld { get; set; }
public string helloImAVariable { get; set; }
public SingleVMFileInfo(string oneRandomWorld, string helloImAVariable)
{
this.oneRandomWorld = oneRandomWorld;
this.helloImAVariable = helloImAVariable;
}
}
только строки содержатся внутри. Я пытался расширить MyObject
с этими двумя методами
//Deserializer
public MyObject(SerializationInfo info, StreamingContext ctxt)
{
oneRandomWorld = (string)info.GetValue("oneRandomWorld", typeof(string));
helloImAVariable = (string)info.GetValue("helloImAVariable", typeof(string));
}
//Serializer
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
info.AddValue("oneRandomWorld", oneRandomWorld);
info.AddValue("helloImAVariable", helloImAVariable);
}
без какой-либо другой результат. Это работает с Windows 7, 8, 8.1, Server 2008R2, Server 2012, Server 2012 R2 .. но дает эту ошибку в Windows XP и Windows Server 2003.
У меня мало идей, что я могу сделать пытаться?
Есть ли у вас какие-либо теории о том, почему он пытается сериализовать «System.Threading.Tasks.Task», а не просто «MyObject» - иначе вы могли бы включить код, который выполняет сериализацию. Сериализация «Задача ' всегда будет терпеть неудачу, потому что она содержит «Исключение», которая, в свою очередь, содержит «Словарь», который является несериализуемым. –
спасибо, я пытаюсь выяснить почему .. Кстати, я хотел бы знать, почему downvote тем, кто это сделал :) – HypeZ
Не могли бы вы включить код, который сериализует ваш объект. есть хороший шанс, мы найдем там проблему. –