繁体   English   中英

孤立的存储在Windows Phone应用程序上不起作用

[英]Isolated Storage not working on windows phone app

我有这个隔离存储功能要写入存储:

public static void WriteIsolatedStorage(object ObjectToStore, StorageType Key)
{

    using (var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())
    using (var storageFile = storage.CreateFile(Key.ToString()))
    {
        var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(string));
        switch (Key)
        {
            case StorageType.UserCredentials:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUserCredentials));
                break;
            case StorageType.BackgroundAgentUserCredentials:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUserCredentials));
                break;
            case StorageType.UserProfile:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUser));
                break;
            case StorageType.InboxItems:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmWFInboxItem>));
                break;
            case StorageType.InboxTileItems:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmInboxTileInfo>));
                break;
            case StorageType.DocumentHeaders:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmWFDocumentHeader>));
                break;
            case StorageType.SearchCache:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(List<List<dmWFDocumentHeader>>));
                break;
            case StorageType.FacebookProfile:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmFBUserProfile));
                break;
            case
                StorageType.BaseUrl:
                xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFURLSetting));
                break;
            default:
                break;
        }
        xmlSerializer.Serialize(storageFile, ObjectToStore);
    }

}

然后这是我从此存储中获取的功能:

public static dmWFURLSetting GetBaseUrl(StorageType Key)
{
    try

    {

        using (var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (var storageFile = storage.OpenFile(Key.ToString(), System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite))
            {
                dmWFURLSetting result = new dmWFURLSetting();
                var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFURLSetting));
                return (dmWFURLSetting)xmlSerializer.Deserialize(storageFile);
            }
        }

    }
    catch (Exception)
    {
        return null;
    }

}

好的,然后这就是我从前端调用这些方法,然后调用viemodel的方法,我在此手机应用程序中使用mvvm。 前端通话:

public string URL = (WorkflowBase.BaseURL != null ? WorkflowBase.BaseURL.ToString() : "");

这是后端的公共财产:

public static string BaseURL = AccTech.WP8.Helpers.IsolatedStorage.GetBaseUrl(Helpers.IsolatedStorage.StorageType.BaseUrl).BaseUrl.ToString();

好吧,这是一个很奇怪的部分,我知道当我完全关闭后启动仿真器时,隔离的存储(缓存)是完全干净的,因此,如果调用此函数,我将得到一个Null返回...如您在前端所见打电话给我做一个内联如果,如果我得到一个空值,然后使其成为“”。 所以这是我跑步时遇到的错误。 PS:如果我将网址设为静态,则该应用有效 在此处输入图片说明

好的,这是我尝试逐步完成整个过程时遇到的错误:

在此处输入图片说明

我实际上无法正常工作,但我已经尝试了Google提供的所有内容...但是没有任何反应,如果有人可以给我一个答案,我会很高兴。

如果您需要更多数据或信息,请告诉我

WorkflowBase.BaseURL!= null,它指向的此工作流库类从未将公共变量更改为其获取的数据,所以这就是发生错误的原因!

所以,是这个星期的菜鸟错误! :P

是的,我也遇到这种类型的异常。但是该异常背后的区域是您的隔离存储区不包含您要访问的密钥,因此如果有任何现金访问隔离存储区,请首先检查是否包含。在Visual Studio中,还可以使用以下方法检查隔离存储区中的密钥数量隔离存储对象中的断点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM