我希望我的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标识符来识别隔离存储?
答案 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中控制隔离存储的标识。