2010-05-06 8 views
3

La structure du répertoire de mon projet Silverlight est comme ce qui suit:Silverlight: Télécharger des fichiers locaux avec WebClient

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

Je veux être capable de l'exécuter soit par un serveur Web ou par Visual Studio directement (pour le débogage fins que je veux contourner le téléchargement de contenu).

Dans mon code de chargement des médias je faire quelque chose comme ce qui suit:

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)); 
} 

Cela fonctionne pour les images mais j'ai aussi des sous-modules qui sont des assemblages tout logement UserControl s. Comme Silverlight n'a pas la capacité de lire le disque, je me suis résigné au fait que je vais devoir "télécharger" les XAP dont j'ai besoin, que je cours en local ou pas. Le problème est si je lance le projet au niveau local et d'essayer d'utiliser un WebClient pour télécharger un XAP je reçois une exception:

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

Est-il possible (WebClient ou autre) je peux arriver à mes XAPs sous-module lors de l'exécution le projet Silverlight directement plutôt que de frapper un serveur web?

EDIT:

oublié de mentionner aussi j'ai essayé d'utiliser avec un DeploymentCatalog MEF et alors que je ne suis pas une exception, rien Compose jamais si je ne peux en supposant qu'il a le même problème.

Répondre

0

Ma conception a essayé d'accéder à des fichiers sur le disque local qui ne sont pas autorisés dans Silverlight. Je n'ai toujours pas une bonne réponse pour pourquoi vous pouvez exécuter une application Silverlight à partir du disque dans Visual Studio et il peut lire avec succès des images/vidéo/audio à partir du disque cependant.

0

Si vous ne voulez pas télécharger encore et encore les mêmes fichiers à partir du serveur (pendant le débogage), téléchargez-le à partir du serveur une fois en utilisant WebClient puis stockez-le sur IsolatedStorage.

Le code suivant vous commencer:

// read/write from/to IsolatedStorage 
IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForSite.OpenFile 
Questions connexes