0

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

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

装配体身份是装配体的证据。这可能来自加密数字签名,它可以是程序集的强名称、程序集的软件发布者或其 URL 标识。如果程序集同时具有强名称和软件发布者身份,则使用软件发布者身份。如果程序集来自 Internet 并且未签名,则使用 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 标识符来标识隔离存储?

4

1 回答 1

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相关联。无需组装签名。我不太确定为什么我会看到以前看到的不同结果。

此外,隔离类型文档似乎并不完全适用于 Silverlight。我对程序集进行强命名的所有尝试都没有改变隔离存储标识。使用反编译器研究了 silverlightSystem.IO.IsolatedStorage代码,但没有找到任何寻找程序集强名称的代码。也许它真的很隐蔽。

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

于 2014-01-08T21:30:05.183 回答