2009-07-29 5 views
0

Dans sa forme très basique, j'ai une requête WebClient pour un xml dans un code Page.xaml derrière. Quelque chose comme:Pourquoi ma requête WebClient fonctionne-t-elle différemment selon sa solution d'hébergement?

public Page() 
    { 
     InitializeComponent(); 

     Uri uri = new Uri("Dummy.xml", UriKind.Relative); 

     WebClient webClient = new WebClient(); 
     webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted); 
     webClient.DownloadStringAsync(uri); 
    } 

    void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Error == null) 
     { 
      //Do something 
     } 
    } 

Si je configurer mon projet Silverlight à courir à travers une page hébergée asp.net, puis mis Dummy.xml dans le dossier ClientBin (par rapport au XAP), il fonctionne très bien.

Si je configure le projet en utilisant uniquement l'option de page de test générée automatiquement et que je place à nouveau le xml par rapport au xap, la requête ne fonctionne pas (même si l'événement terminé se déclenche).

Ma question est pourquoi? Est-ce une exigence que tout projet Silverlight qui télécharge dynamiquement doit être sur un serveur?

Vive J

Répondre

1

Tout d'abord, essayez d'éviter d'utiliser la page de test générée automatiquement. Cela nécessite que vous compreniez comment le modèle de sécurité Silverlight par défaut fonctionne lorsque le xap est accédé en tant que fichier.

Pour répondre à votre question, vous rencontrez la sécurité conçue pour empêcher l'accès inter-domaine non autorisé.

+0

lol ... gentil et clair message d'erreur qu'ils jettent alors :). Merci de votre aide. Je me demande comment ils gèrent cela pour les applications de bureau Silverlight alors. –

+0

Les applications OOB se trouvent dans le sandbox du navigateur à toutes fins utiles. Ainsi, lorsque l'ordinateur de bureau tente d'appeler un service Web WebService a besoin d'une stratégie interdomaine pour le site Web, l'application Silverlight a été installée à partir de. –

0

Oui, il n'y a pas de serveur Web pour se connecter à! La page de test autogénérée ouvre juste ce XAP directement sans invoquer le serveur Web de Visual Studio. Si vous voulez faire cela, vous devez utiliser l'autre option pour créer un site Web avec le projet Silverlight. Vous pouvez également incorporer le fichier XML dans le fichier XAP en tant que ressource et y accéder en tant que ressource.

+0

Cela répond à la question 'pourquoi'? Est-ce que WebClient a une dépendance à l'existence d'un serveur Web? –

Questions connexes