繁体   English   中英

Silverlight的文件权限问题

[英]File Permissions Issue with Silverlight

我在Visual Studio中有一个Silverlight 4 / C#项目。 我通过右键单击项目>>添加新项>> Xml文件来制作XML数据文件。 然后,我尝试打开文件:

        StreamReader streamReader = new StreamReader("data.xml");

但是,这给出了安全例外。 我该如何解决这个问题,或授予必要的权限?

您是否只需要能够在执行时读取文件? 如果是这样,我建议您将其设置为在Visual Studio中具有Resource build操作,然后使用Assembly.GetManifestResourceStream将其打开。 这是将只读数据与应用程序IMO捆绑在一起的最简单方法。

Silverlight默认情况下不允许本地文件系统访问。 您的选择是:

如果通常需要存储数据,请尽可能使用IsolatedStorage。

您将需要将该项目标记为资源 ,而不是嵌入式资源

MSDN ...

Visual Studio中的“属性”窗口在“生成操作”下拉列表中提供了其他几个值。 但是,您只能在Silverlight项目中使用前三个值。 特别是,Silverlight嵌入式资源必须始终使用“资源”构建操作,而不是“嵌入式资源”构建操作,后者使用Silverlight无法识别的格式。

您可以在这里看到一个很棒的遍历, 需要您尝试完成。 由于您不是要访问磁盘上的文件,而是作为资源,所以这不是问题。 在这里与IsolatedStorage或提升的权限有关。

StreamReader的构造函数期望进入本地文件系统的文件路径,该路径仅在具有增强信任的浏览器中可用。

相反,您应该使用Application.GetResourceStream :-

Stream stream = Application.GetResourceStream(new Uri("data.xml", UriKind.Relative));
StreamReader reader = new StreamReader(stream);

但是我希望您真的只希望在XDocument ,而绕过了StreamReader阶段:

XDocument doc = XDocument.Load(stream);

顺便说一句,我个人将XML作为内容保留在Xap中,而不是将其嵌入到程序集中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM