设置在C#中为XAML浏览器应用程序读取本地XML文件的权限

时间:2012-06-20 19:03:38

标签: c# xml xbap securityexception

我有一个最终放在服务器上的XAML浏览器应用程序,但我目前正在从我的Documents文件夹中测试它。我试图在本地读取XML文档,但我被困在XmlReader.Create(); 当我尝试使用我的XML文档时,抛出了SecurityException,因此我尝试使用以下内容来赋予XML文件读取权限:

FileIOPermission fpa1 = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\Users\User1\Documents\Visual Studio 2010\Projects\WpfBrowserApplication2\WpfBrowserApplication2\XMLDoc1.xml");
xReader = XmlReader.Create(@"C:\Users\User1\Documents\Visual Studio 2010\Projects\WpfBrowserApplication2\WpfBrowserApplication2\XMLDoc1.xml"

错误消息显示为:

A first chance exception of type 'System.Security.SecurityException' occurred in mscorlib.dll
Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=[tokennumber]' failed.

FileIOPermission是否是用于启用XmlReader的读取权限的正确类?

1 个答案:

答案 0 :(得分:0)

FileIOPermission类用于检查您是否拥有权限,而不是设置权限。

IE:

try
{
    FileIOPermission perf = new FileIOPermission(FileIOPermissionAccess.Read, @"C:\Users\jbeaulac\Documents\test.xml");
    perf.Demand();
}
catch (Exception ex)
{
    MessageBox.Show("Not enough permission, blah blah blah.");
    return;
}


var reader = XmlReader.Create(@"C:\Users\jbeaulac\Documents\test.xml");
/// ...

从XBAP应用程序中,您不能随意乱用用户的文件,除非您的应用程序完全信任。

项目属性 - >安全 - >这是一个完全信任的应用程序

另外,如果您打算使用XBAP,那么这个文档真的值得一读:

http://msdn.microsoft.com/en-us/library/aa970910.aspx