जैसा कि बताया जा @driis, आप विंडोज फोन पर BinaryFormatter
उपयोग नहीं कर सकते। आप डब्ल्यूसीएफ एंडपॉइंट में बाइनरी एन्कोडिंग का उपयोग कर सकते हैं (यानी, एक एंडपॉइंट जिसका बाध्यकारी BinaryMessageEncodingBindingElement
और HttpTransportBindingElement
के साथ एक कस्टम बाध्यकारी है), और यह WP7 पर समर्थित होगा। आप बस बाइनरी फॉर्मेटर का उपयोग नहीं कर सकते हैं।
अद्यतन टिप्पणी निम्नलिखित: अपने कोड को देखते हुए, यह है कि कोड है कि बदलने की आवश्यकता न केवल है - आप एक प्रारूप है जो में समर्थित है में एक वस्तु को क्रमानुसार करने के साथ-साथ सेवा कोड को बदलने की आवश्यकता सिल्वरलाइट। आप एक बाइनरी रीडर/लेखक के साथ DataContractSerializer
का उपयोग कर सकते हैं, या आप दोनों स्थितियों में समर्थित एक और लाइब्रेरी का उपयोग कर सकते हैं। उदाहरण के लिए, नीचे दिए गए कोड डेस्कटॉप और SL संस्करणों में काम करना चाहिए:
public static T DeserializeObject<T>(byte[] xml)
{
using (MemoryStream memoryStream = new MemoryStream(xml))
{
using (XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(
memoryStream, XmlDictionaryReaderQuotas.Max))
{
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
return (T)dcs.ReadObject(reader);
}
}
}
और सर्वर पर:
public static byte[] SerializeObject<T>(T obj)
{
using (MemoryStream ms = new MemoryStream())
{
using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateBinaryWriter(ms))
{
DataContractSerializer dcs = new DataContractSerializer(typeof(T));
dcs.WriteObject(writer, obj);
writer.Flush();
return ms.ToArray();
}
}
}
लिखित रूप में आपकी सेवा के साथ कोई समाधान नहीं है। आपको एक सीरियलाइजेशन प्रारूप का उपयोग करने के लिए सेवा को बदलना होगा जो कि विंडोज फोन 7 में समर्थित है। यदि आपकी सेवा डब्ल्यूसीएफ है तो आप डेटाकंट्रैक्टसेरियलाइज़र का उपयोग क्यों नहीं कर रहे हैं और डब्ल्यूसीएफ को सीरियलाइजेशन/डेसेरियलाइजेशन को संभालने की अनुमति क्यों दे रहे हैं? –