2010-05-06 3 views
3

Структура каталогов моего Silverlight проекта, как следующее:Silverlight: Загрузить локальные файлы с WebClient

\Bin 
- MainModule.xap 
- \Images 
--- Image1.png 
--- Image2.png 
- \Modules 
--- SubModule.xap 

Я хочу, чтобы иметь возможность запускать его либо через веб-сервер или через Visual Studio напрямую (для отладки цели я хочу обойти загрузку контента).

В моей загрузки носителя кода я сделать что-то вроде следующего:

if (runningLocally) 
{ 
    var bitmapImage = new BitmapImage(); 
    bitmapImage.UriSource = new Uri("Images/Image1.png", UriKind.Relative); 
    var image = new Image(); 
    image.Source = bitmapImage; 
} 
else 
{ 
    WebClient wc = new WebClient(); 
    wc.OpenReadCompleted += (s, e) => 
    { 
     var bitmapImage = new BitmapImage(); 
     bitmapImage.SetSource(e.Result); 
     var image = new Image(); 
     image.Source = bitmapImage; 
    }; 
    wc.OpenReadAsync(new Uri("Images/Image1.png", UriKind.Relative)); 
} 

Это работает для изображений, но я также суб-модулей, которые только сборками корпус UserControl s. Поскольку Silverlight не имеет возможности читать диск, я смирился с тем фактом, что мне придется «загружать» XAP-файлы, которые мне нужны, если я работаю локально или нет. Проблема заключается в том, если я запустить проект локально и попытаться использовать WebClient скачать XAP я получаю исключение:

System.Net.WebException: An exception occurred during a WebClient request. ---> System.NotSupportedException: The URI prefix is not recognized. 

Есть ли способ (WebClient или иначе) я могу получить мои суб-модуль XAPs при запуске проект Silverlight напрямую, а не попадание на веб-сервер?

EDIT:

забыл упомянуть, я также попытался с помощью MEF с DeploymentCatalog и пока я не получаю исключение, никогда ничего не сочиняет, поэтому я могу только при условии, что та же самая проблема.

ответ

0

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

0

Если вы не хотите загружать одни и те же файлы с сервера снова и снова (при отладке), загрузите его с сервера один раз с помощью WebClient, затем сохраните его на IsolStorage.

Следующий код поможет вам начать:

// read/write from/to IsolatedStorage 
IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForSite.OpenFile 
Смежные вопросы