增加配额在本文一开始我就提到独立存储严格的限制了应用程序可以存储的数据的大小,但是我们可以通过IsolatedStorageFile类提供的IncreaseQuotaTo方法来申请更大的存储空间,空间的大小是用字节作为单位来表示的,如下代码片段所示,申请独立存储空间增加到5M:

Code
using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
{
long newQuetaSize = 5242880;
long curAvail = store.AvailableFreeSpace;
if (curAvail < newQuetaSize)
{
store.IncreaseQuotaTo(newQuetaSize);
}
}
当我们试图增加空间大小时浏览器将会弹出一个确认对话框,供我们确认是否允许增加独立存储的空间大小。

附件:
您所在的用户组无法下载或查看附件文件被存往何处既然独立独立存储是存放在客户端本地,那到底存放在何处呢?在我个人计算机上的地址为:C:\Users\TerryLee\AppData\LocalLow\Microsoft\Silverlight\is\035kq51b.2q4\pksdhgue.3rx\1,不同机器会有一些变化,另外在XP下的存储位置与Vista是不相同的。在g文件夹下面,我们找到当前应用程序的一些公有信息,可以看到有如下三个文件:

附件:
您所在的用户组无法下载或查看附件id.dat记录了当前应用程序的ID
quota.dat记录了当前应用程序独立存储的配额,即存储空间大小
used.dat记录已经使用的空间
在另一个s文件夹下可以找到我们创建的目录以及文件,并且可以打开文件来看到存储的内容,如下图所示:

附件:
您所在的用户组无法下载或查看附件禁用独立存储现在我们来思考一个问题,既然独立存储是一个与Cookie机制类似的局部信任机制,我们是否也可以禁用独立存储呢?答案自然是肯定的。在Silverlight应用程序上点击右键时,选择Silverlight Configuration菜单,将会看到如下窗口:

附件:
您所在的用户组无法下载或查看附件在这里我们可以看到每一个应用程序存储空间的大小以及当前使用的空间;可以删除应用程序独立存储数据或者禁用独立存储的功能。
独立存储配置最后在简单说一下独立存储配置,在Beta 1时代是应用程序配置,现在不仅支持应用程序配置,同时还支持站点配置,我们可以用它来存储应用程序配置如每个页面显示的图片数量,页面布局自定义配置等等,使用IsolatedStorageSettings类来实现,该类在设计时使用了字典来存储名-值对,它的使用相当简单:

Code
IsolatedStorageSettings appSettings =
IsolatedStorageSettings.ApplicationSettings;
appSettings.Add("mykey","myValue");
appSettings.Save();
IsolatedStorageSettings siteSettings =
IsolatedStorageSettings.SiteSettings;
siteSettings.Add("mykey1","myValue1");
siteSettings.Save();
独立存储配置的机制与我们上面讲的一样,它也是基于本地文件存储,系统默认的会创建一个名为__LocalSettings的文件进行存储,如下图所示:

附件:
您所在的用户组无法下载或查看附件打开文件后可以看到,存储的内容(此处进行了整理)

Code
<ArrayOfKeyValueOfstringanyType
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<KeyValueOfstringanyType>
<Key>mykey</Key>
<Value xmlns:d3p1="http://www.w3.org/2001/XMLSchema"
i:type="d3p1:string">myValue</Value>
</KeyValueOfstringanyType>
</ArrayOfKeyValueOfstringanyType>
值得一提的是使用独立存储配置不仅仅可以存储简单类型的数据,也可以存储我们自定义类型的数据。
小结本文详细介绍了Silverlight 2中的独立存储机制,希望对大家有所帮助。
示例下载:

附件:
您所在的用户组无法下载或查看附件