2010-11-18 2 views
1

У меня есть проект Silverlight 4/C#, над которым я работаю в Visual Studio. Я создал файл данных XML, щелкнув правой кнопкой мыши по проекту >> Добавить новый элемент >> Xml-файл. Затем я попытаюсь открыть файл:Проблема с правами доступа к файлам с Silverlight

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

Однако это дает исключение безопасности. Как я могу обойти это или предоставить необходимые разрешения?

ответ

1

Этот конструктор 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 как Content в Xap, а не встраивать его в сборку.

2

Вам нужно только прочесть файл во время выполнения? Если это так, я предлагаю вам установить для него действие сборки ресурсов в Visual Studio, а затем использовать Assembly.GetManifestResourceStream, чтобы открыть его. Это самый простой способ связывания данных только для чтения с приложением IMO.

+0

см. Комментарий ниже, SL не оценивает встроенную ссылку на ресурсы на основе MSDN –

+0

@Aaron: Спасибо, отредактирован. –

2

Silverlight не разрешает доступ к локальной файловой системе по умолчанию. Ваши варианты:

Если вам нужно хранить данные в целом, используйте IsolStorage, если сможете.

+0

-1 OP не намеренно пытается читать с локального диска, а как ресурс, поэтому ссылка IsolStorage и повышенных разрешений не требуется, кроме того, ссылки на ссылки Skeet делают его встроенным ресурсом, который недействителен для SL –

2

Необходимо указать товар как ресурс, а не встроенный ресурс.

От MSDN ...

окно свойств в Visual Studio предоставляет несколько других значений в раскрывающемся списке Сложение действий. Тем не менее, вы можете использовать только предыдущие три значения с проектами Silverlight. В частности, Silverlight встроенных ресурсы должны всегда использовать сборки действие ресурсов , а не встроенный ресурсов сборки действий, который использует формат , что Silverlight не может распознать.

Прогуляться можно через here, в результате чего вы пытаетесь достичь. Поскольку вы не пытаетесь получить доступ к файлам на диске, но в качестве ресурсов это не проблема. Здесь важны изолированная инвентаризация или повышенные разрешения.

+0

Хм. .. странный. Он работает в WP7, и это почти все, что у меня есть в SL. Он все еще сломан в SL4? –

+0

@Jon Не пробовал в SL4, но в других версиях SL ... можно только сходить с документа на данный момент ... –

Смежные вопросы