0
我正在開發一個使用Xamarin的iOS項目,它使用C#.NET(SOAP)Web服務和iOS。我試圖從Web服務發送DataSet對象到字節數組形式的移動。我用following代碼轉換到/從字節數組:將C#字節數組轉換爲對象拋出SerializationException
public static byte[] ConvertObjectToByteArray(Object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
if (obj.GetType() == typeof(DataSet))
{
DataSet ds = (DataSet)obj;
ds.RemotingFormat = SerializationFormat.Binary;
}
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
public static Object ConvertByteArrayToObject(byte[] byteArr)
{
Object resultObj;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream(byteArr))
{
ms.Seek(0, SeekOrigin.Begin);
resultObj = (Object) bf.Deserialize(ms);
ms.Close();
}
return resultObj;
}
然而,當我嘗試字節數組轉換回從web服務發送到移動數據集,我有個例外「意外二進制元素:101」從'反序列化'方法。我嘗試以下,但仍無法弄清楚:
- 轉換數據集爲byte []和轉換回數據集的WebService,它工作正常
- 轉換數據集爲byte []和轉換回數據集移動,它工作正常
- 我調試並檢查字節數組的長度和前幾個字節是相同的,當從WebService發送和移動時收到。
任何人都有任何線索或經由SOAP Web服務發送byte []的經驗?
在此先感謝!
這可能發生,因爲這兩個可能會把手(反)序列略有不同。或者僅僅是因爲其中一個有bug(假設這裏是Mono)。無論如何,嘗試使用非二進制序列化來開始看看會發生什麼。您仍然可以將XML文本轉換爲二進制文件。 – 2014-10-08 07:22:35