更改Silverlight隔离存储标识

时间:2014-01-03 22:06:54

标签: .net silverlight isolatedstorage isolatedstoragefile

我希望我的Silverlight应用程序中的隔离存储能够通过它加载的xap的域来识别,而不是默认情况下显示在浏览器URL中的主机域。

根据Types of Isolated Storage文档,应该有一种方法可以通过强烈命名程序集来存储在“Publisher Identity”下,而不是通过提供应用程序的URL来识别存储。我引用:

  

装配标识是装配的证据。这可能会来   来自加密数字签名,可以是程序集   强名称,程序集的软件发布者或其URL   身份。如果程序集具有强名称和软件   发布者身份,然后使用软件发布者身份。如果   程序集来自Internet并且是未签名的URL标识   使用。

我强烈命名了程序集(sn已验证)并将证书添加到我的计算机上的受信任根目录中。我通过iis在本地提供页面,但商店仍然通过网站的URL识别。

我尝试过两种不同的方式创建商店:

IsolatedStorageSettings.SiteSettings[mykey] = myvalue;
//and
IsolatedStorageFile.GetUserStoreForApplication().CreateFile("myfile.txt");

可以在C:\Users\afeldman\AppData\LocalLow\Microsoft\Silverlight\is\20ngypzr.gs4\1l3t5sqo.aji\1\s\...\id.dat文本文件中看到该ID,但很遗憾,它仍然与主机网址绑定。

是否有人通过使用强名称程序集或任何其他方法设法使用非主机URL标识符来识别隔离存储?

1 个答案:

答案 0 :(得分:0)

因此,出于某种原因,它开始以我想要的方式工作。隔离存储的标识由提供.xap的域标识。澄清:

这样的.xap src路径中的

相对路径

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2">
    <param name="source" value="/mypath/my.xap" />
</object>

由于my.xap是作为网站的一部分提供的,因此商店将与该网站的域名相关联。

如果您从其他来源提供.xap,请使用.xap src路径中的完整路径,如下所示:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2">
    <param name="source" value="http://usethisdomain/mypath/my.xap" />
</object>

商店现在将与 usethisdomain 相关联。不需要集会签字。我不确定为什么我看到之前看到的不同结果。

另外,Types of Isolation文档似乎并不完全适用于Silverlight。我强烈命名程序集的所有尝试都没有改变隔离的存储标识。使用反编译器调查了silverlight System.IO.IsolatedStorage代码,但未找到任何查找程序集强名称的代码。也许它真的很隐蔽。

总之,如果您可以控制source参数的域,那么您可以在silverlight中控制隔离存储的标识。