2010-03-25 4 views
0

Я очень новичок в разработке Silverlight. Я понимаю, что это технология клиентской стороны, поэтому парадигма отличается от обычной разработки ASP.NET. Сказав это, я не понимаю, где мой код на стороне сервера развернут.Silverlight Не удается найти источник данных XML

У меня есть серебряный свет \ приложение MVC. Я пытаюсь прочитать XML-документ из моей папки «Модели». Следующий фрагмент кода выполняется из класса, который находится в том же месте, что и документ XML, «Модели». Нагрузка() приводит к исключению SystemIOFileNotFound. Я заметил, что при создании приложения XML-документ не заложен в том же месте, что и сборка веб-проекта. Я предполагаю, что это связано с тем, что это проект Silverlight. Может ли кто-нибудь сказать мне, что мне не хватает?

_xdoc = new XDocument(); 
    _xdoc = XDocument.Load(new Uri("videos.xml",UriKind.Relative).ToString()); 

Редактировать ..

Поведение я после является начальная страница (Silverlight) заполнит управления через стороне сервера контроллера. т.е. localhost/video

ответ

0

Проблема заключалась в том, что я пытался получить доступ к этому статическому ресурсу, как в типичном ASP.net. Однако я счел нужным сопоставить путь к файлу с использованием текущего HTTPContext:

HttpContext.Current.Server.MapPath("~/App_Data/videos.xml"); 

Так что это работало для меня. Поскольку этот код находится в веб-проекте, а не в проекте silverlight, я все еще не понимаю, почему я не могу просто получить доступ к этому ресурсу, используя относительный путь. Этот код будет выполнен в контексте веб-сервера. , т. Е.

XDocument.load(../App_Data/videos.xml); 
0

Silverlight не может получить доступ к вашей файловой системе (к счастью), поэтому вы не можете получить доступ к файлу. Попробуйте внедрить его в качестве ресурса или сохранить его в локальном API хранилища, предоставляемом silverlight.

0

Предполагая, что папка «Модели» находится в веб-проекте (т. Е. Не в проекте Silverlight), я думаю, что ваша проблема не связана с Silverlight. Код, загружающий файл XML, предполагает, что файл находится в текущем каталоге, поэтому вам необходимо обеспечить его с помощью своей техники развертывания.

Если вы делаете это в части Silverlight, вы должны поместить XML-файл во встроенный ресурс и получить к нему доступ в виде потока (получить его с помощью Assembly.GetManifestResourceStream) или как ресурс (a la WPF, а не встроенный ресурс) и получить доступ к нему с помощью синтаксиса части пакета.

+0

Вы правы в моем веб-проекте. Однако приведенный выше код, похоже, ищет XML-документ в моих файлах c: \ program \ Microsoft Visual ... Любая идея, почему? Поскольку исполняющая сборка не является.?! – Nick

+0

Это потому, что вы используете сервер веб-разработки, который поставляется с VS? – Timores

+0

Да .. Я. Можете ли вы предложить хороший учебник или документ Silverlight \ MVC? Я считаю, что то, что происходит, является стартовой страницей моего приложения Silverlight, и когда я пытаюсь перейти с этой страницы, корневой контекст отличается. Значение .. uri относительно моего приложения silverlight, а не веб-сервера. – Nick

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