【问题标题】:Change Silverlight Isolated Storage Identity更改 Silverlight 隔离存储标识
【发布时间】:2014-01-03 22:06:53
【问题描述】:

我希望我的 Silverlight 应用程序中的独立存储由它加载的 xap 的域来标识,而不是由浏览器 URL 中显示的主机域来标识,这是默认情况下执行的。

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

程序集身份是程序集的证据。这可能会到来 来自加密数字签名,它可以是程序集的 强名称、程序集的软件发布者或其 URL 身份。如果程序集既有强名称又有软件 发布者身份,则使用软件发布者身份。如果 该程序集来自互联网且未签名,URL 标识 被使用了。

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

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

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

ID 可以在 C:\Users\afeldman\AppData\LocalLow\Microsoft\Silverlight\is\20ngypzr.gs4\1l3t5sqo.aji\1\s\...\id.dat 文本文件中看到,不幸的是它仍然与主机 URL 绑定。

有没有人设法通过使用强命名程序集或任何其他方式使隔离的商店用非主机 URL 标识符来标识?

【问题讨论】:

  • 你正在调用 GetUserStoreForApplication(),也许可以试试 GetUserStoreForAssembly() msdn.microsoft.com/en-us/library/…
  • GetUserStoreForAssembly() 不适用于 Silverlight

标签: .net silverlight isolatedstorage isolatedstoragefile


【解决方案1】:

因此,出于某种原因,它开始按我想要的方式工作。隔离存储的身份由为 .xap 提供服务的域标识。澄清一下:

relative .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 代码,但没有找到任何寻找汇编强名称的代码。也许它真的很隐蔽。

综上所述,如果你可以控制源参数的域,那么你就可以控制silverlight中隔离存储的身份。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多