0

wp7 用のアプリケーションを開発しています。datacontractserializer を使用してアプリケーションの状態を isolatedstoragefile に保存しています。オブジェクトをシリアル化しようとすると、この例外に直面することがあります。

EndRootElement 状態のトークン EndElement は、無効な XML ドキュメントになります。XML フラグメントを作成する場合は、ConformanceLevel 設定が ConformanceLevel.Fragment または ConformanceLevel.Auto に設定されていることを確認してください。

ここに私がシリアライズしている私のクラスがあります

[DataContract]
public class TcpSessionProperties
{
  [DataMember]
    public int NumberOfReceivedStanzas { get { return _numberOfReceivedStanzas; } set { _numberOfReceivedStanzas = value; } }

    [DataMember]
    public int NumberOfPacketsSent { get { return _numberOfPacketsSent; } set { _numberOfPacketsSent = value; } }


    [DataMember]
    public List<TcpPacket> PendingPacketsToSendQueue
    {
        get { return _pendinPacketsToSendQueue; }
        set
        {
            LogUtility.Log(Thread.CurrentThread.GetHashCode());
            _pendinPacketsToSendQueue = value;
        }
    }

}

cla

これが私のコードで、シリアライズとデシリアライズを行っています

public class AppCacheIsolatedFile
{
    public static void Add(object val)
    {
      private static object _objectToSave;

        lock (_storageLock)
        {
            /*
            if (PhoneApplicationService.Current.State.ContainsKey(key))
                PhoneApplicationService.Current.State[key] = val;
            else
                PhoneApplicationService.Current.State.Add(key, val);
             */
            _objectToSave = val;
            WriteObject(NameOfFile, val, typeof(StreamingSocketConnection.StreamingSocketConnection));
        }
         public static void WriteObject(string fileName,object val,Type type)
    {
        try
        {
            Console.WriteLine(
            "Creating a Person object and serializing it.");

            using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileName, FileMode.Create, IsoStore))
            {
                DataContractSerializer dcs = new DataContractSerializer(type);
                dcs.WriteObject(stream, val);
            }
        }
        catch (Exception exception)
        {

            LogUtility.NotifyUserAndLog("Exception occured in isolatd storage file  while writing "+exception.StackTrace); 
        }


    }


    }

その例外は dcs.writeobject で発生します。なぜこれが起こっているのかわかりません。

4

0 に答える 0