Установить разрешение на чтение локального файла XML в C# для приложения браузера XAML

У меня есть приложение браузера XAML, которое в конечном итоге будет размещено на сервере, однако в настоящее время я тестирую его из папки "Документы". Я пытаюсь читать из 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 ответ

Класс 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

Другие вопросы по тегам